在操作中使用泛型来返回不同的DTO

时间:2013-10-02 05:56:32

标签: c# generics asp.net-web-api

我想从1动作中返回不同的DTO。我设法通过发送查询字符串detailLevel并对值执行switch / case来返回不同的DTO类型。这并不理想,因为我想在大多数GET操作中执行此操作。理想情况下,我希望我的Action是一个通用的方法,最终看起来像这样:

[HttpGet("{detailLevel=Minimal}")]
[DetailLevelAttribute]
public HttpResponseMessage Get<T>()
{
    IEnumerable<T> schools = this.schoolService.GetAllSchools<T>(); ;

    return Request.CreateResponse<IEnumerable<T>>(HttpStatusCode.OK, schools);
}

我对如何完成此操作的最佳猜测是使用ActionFilterAttribute来执行OnActionExecuting中的切换/案例内容,然后使用由{的值确定的类型调用操作{1}},但我不确定如何在detailLevel内调用/修改请求的操作(或者这甚至是最好的方法)。

0 个答案:

没有答案