我想从 1 动作返回不同的 DTO。我设法通过发送查询字符串detailLevel
并对值进行切换/大小写以返回不同的 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
的操作,然后使用由 的值确定的类型调用操作detailLevel
,但我不确定如何调用/修改请求的内部的操作ActionFilterAttribute
(或者如果这甚至是最好的方法)。