我想从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
内调用/修改请求的操作(或者这甚至是最好的方法)。