【发布时间】:2019-09-17 13:45:56
【问题描述】:
版本:
- 项目:ASP Net Core 2.1,Web API
- 包:Swashbuckle.AspNetCore (4.0.1)
问题:
我创建了一个CheckIncludeForOperationFilter 类,它继承自Swashbuckle.AspNetCore.Swagger.IDocumentFilter,并实现了这个接口需要的唯一方法——public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)。
这个类应该做什么?
它应该搜索IncludeForAttribute。这意味着我应该检查 API 中的操作是否具有此属性或整个控制器。
我有什么?
public class CheckIncludeForOperationFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
foreach (var apiDescription in context.ApiDescriptions)
{
}
}
}
当我在调试模式下启动程序时,事情变得有趣了,我可以清楚地看到对象apiDescription 有什么。它包含我搜索的所有内容。以下是动作属性:
apiDescription.ActionDescriptor.MethodInfo.CustomAttributes
以及所有控制器属性:
apiDescription.ActionDescriptor.MethodInfo.DeclaringType.CustomAttributes
问题是,编译器在调试中显示属性MethodInfo,但我写的时候它不见了。它以红色突出显示,我无权访问它:
如何获取所有属性?
干杯
【问题讨论】:
标签: c# asp.net-core swagger swagger-2.0 swashbuckle