相关疑难解决方法(0)

通用Web Api控制器,支持任何模型

是否可以使用支持项目中任何模型的通用Web API?

class BaseApiController<T> :ApiController
{
    private IRepository<T> _repository;

    // inject repository

    public virtual IEnumerable<T> GetAll()
    {
       return _repository.GetAll();
    }

    public virtual T Get(int id)
    {
       return _repositry.Get(id);
    }

    public virtual void Post(T item)
    {
       _repository.Save(item);
    }
    // etc...
}

class FooApiController : BaseApiController<Foo>
{
   //..

}

class BarApiController : BaseApiController<Bar>
{
   //..
}
Run Code Online (Sandbox Code Playgroud)

这会是一个好方法吗?

毕竟,我只是重复CRUD方法?我可以使用这个基类为我做这项工作吗?

这个可以吗?你会这样做吗?任何更好的想法?

c# generics asp.net-web-api

21
推荐指数
3
解决办法
2万
查看次数

Web API 通用操作

我有一个需要接受两个不同对象模型的 http 操作。实现查看两个模型对象并知道此时该做什么。我可以使用通用对象吗?

[HttpPost]
public IHttpActionResult InsertData(string accessKey, [FromBody] T content)
{
    try
    {
        MobileAppService ms = new MobileAppService();
        ResultStatus resultStatus = ms.ProcessAppLogging(t);
        return Ok(resultStatus.ResultCode);
    }
    catch (Exception e)
    {
        Elmah.ErrorSignal.FromCurrentContext().Raise(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net asp.net-web-api

7
推荐指数
1
解决办法
3607
查看次数

通用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可以处理该场景中的路由吗?这是一个好主意吗?

c# generics asp.net-web-api

5
推荐指数
1
解决办法
7369
查看次数

标签 统计

asp.net-web-api ×3

c# ×3

generics ×2

.net ×1

asp.net ×1