<TValue> 原版 ASP.NET 中的操作结果(非 ASP.NET 核心)



我正在尝试将Swagger集成到一个有点大的vanilla 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 核心有一个整洁的ActionResult<TValue>类。但我在香草 ASP.NET 里找不到替代品。我想知道在这种情况下我能做什么,而不会在具体的控制器类实现中引入不需要的耦合和方法覆盖,或者将项目移动到全新的 ASP.NET Core。

我很确定你可以实现一个自己的ActionResult类,它继承自IHttpActionResult,只是充当代理......我认为 NSwag 会像 ASP.NET 核心一样捡起它......

免责声明:我是NSwag的开发人员之一...

最新更新