我正在尝试将 Swagger 集成到一个有点大的香草 ASP.NET MVC 应用程序中。读完这篇文章后,我打算使用 Swashbuckle 或 NSwag 。问题是我的控制器是从通用基类继承而来的,如下所示:
public class BookController : BaseController<Book>
然后我在基类中有一个 GET 方法:
public abstract class BaseController<T> : ApiController where T : SomeEntityConstraint
{
...
public virtual IHttpActionResult Get(int id)
{
T queryResult = _repository.Get(id)
...
return Ok(queryResult);
}
}
我正计划向[SwaggerResponse(HttpStatusCode.OK, typeof(T))]
一个方法添加属性,这就是我很难 CSharp 的地方。显然不能简单地在属性中使用泛型类型参数。它们必须在编译时已知。
我可以从这里看到 ASP.NET Core 有一个整洁的ActionResult<TValue>
类。但是我在普通的 ASP.NET 中找不到替代品。我想知道在这种情况下我能做些什么,而不会在具体的 Controller 类实现中引入不必要的耦合和方法覆盖,或者将项目移动到全新的 ASP.NET Core。