Oni*_*mus 5 c# generics asp.net-web-api
我正在使用Web API v2,我有一些模型,我需要做CRUD操作.例如,我有一个Allergy模型和一个Prescription模型.在应用程序本身中,我有可以转换为适当模型的视图模型,但为了简单起见,我只想说我在Web API控制器中直接使用模型.
所以像这样:
public class PrescriptionsController
{
public HttpResponseMessage Put(Prescription model)
{
// saved to the DB
}
... (other CRUD operations)
}
Run Code Online (Sandbox Code Playgroud)
我对Allergy模型也有同样的看法:
public class AllergiesController
{
public HttpResponseMessage Put(Allergy model)
{
// saved to the DB
}
... (other CRUD operations)
}
Run Code Online (Sandbox Code Playgroud)
两种型号都具有不同的属性,但处理方式完全相同 - 实际上我有大约3种其他型号,每种型号的处理方式完全相同.我讨厌有5个不同的端点,基本上是复制和粘贴代码.
所以我的问题是:
我可以制作一个通用控制器来处理所有这些模型吗?有点像MyCommonController<T>?(但当然有更好的名称!)Web API可以处理该场景中的路由吗?这是一个好主意吗?
最后我没有尝试通用控制器.看起来有可能通过路由跳过一些箍.
然而,路由修改以使其工作的事实是如此复杂,这种做法否定了我将获得的好处.我想保持简单.所以我只是创建了一个通用基类:
class MyBaseController<TModel> : ApiController
{
public TModel Get(int id) { ... }
}
Run Code Online (Sandbox Code Playgroud)
并且每种类型都继承自它:
class PrescriptionsController : MyBaseController<Prescription> { }
Run Code Online (Sandbox Code Playgroud)
这就像魅力一样,没有弄乱路由或任何东西.它清楚地说明了正在发生的事情并且非常易于维护.
| 归档时间: |
|
| 查看次数: |
7369 次 |
| 最近记录: |