G.D*_*mov 3 c# swagger swagger-2.0 swashbuckle asp.net-core
我创建了一个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)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我在调试模式下启动程序时,事情变得有趣了,我可以清楚地看到对象apiDescription有什么。它包含我搜索的所有内容。以下是操作属性:
apiDescription.ActionDescriptor.MethodInfo.CustomAttributes
和所有控制器属性:
apiDescription.ActionDescriptor.MethodInfo.DeclaringType.CustomAttributes
问题是,编译器MethodInfo在调试中显示了该属性,但是在我编写它时它却不见了。它以红色突出显示,我无权访问它:
如何获得所有属性?
干杯
小智 5
你可以试试这个方法:
MethodInfo methodInfo;
var ss = apiDescription.TryGetMethodInfo(out methodInfo);
var controllerFilters = methodInfo.DeclaringType.CustomAttributes;
var actionFilters = methodInfo.DeclaringType.CustomAttributes;
Run Code Online (Sandbox Code Playgroud)
您将获得自定义属性。
| 归档时间: |
|
| 查看次数: |
1618 次 |
| 最近记录: |