从 IDocumentFilter 中的方法和控制器获取所有 CustomAttributes,swashbuckle asp net core,swagger
Get all CustomAttributes from Method and Controller inside IDocumentFilter, swashbuckle asp net core, swagger
版本:
- 项目:ASP 网络核心 2.1,Web API
- 软件包:Swashbuckle.AspNetCore (4.0.1)
问题:
我创建了一个 CheckIncludeForOperationFilter
class,它继承自 Swashbuckle.AspNetCore.Swagger.IDocumentFilter
并实现了该接口所需的唯一方法 - public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
。
这个 class 应该做什么?
它应该搜索 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
,但在我编写时却不见了。它以红色突出显示,我无法访问它:
如何获取所有属性?
干杯
你可以试试这个方法:
MethodInfo methodInfo;
var ss = apiDescription.TryGetMethodInfo(out methodInfo);
var controllerFilters = methodInfo.DeclaringType.CustomAttributes;
var actionFilters = methodInfo.DeclaringType.CustomAttributes;
您将获得自定义属性。
版本:
- 项目:ASP 网络核心 2.1,Web API
- 软件包:Swashbuckle.AspNetCore (4.0.1)
问题:
我创建了一个 CheckIncludeForOperationFilter
class,它继承自 Swashbuckle.AspNetCore.Swagger.IDocumentFilter
并实现了该接口所需的唯一方法 - public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
。
这个 class 应该做什么?
它应该搜索 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
,但在我编写时却不见了。它以红色突出显示,我无法访问它:
如何获取所有属性?
干杯
你可以试试这个方法:
MethodInfo methodInfo;
var ss = apiDescription.TryGetMethodInfo(out methodInfo);
var controllerFilters = methodInfo.DeclaringType.CustomAttributes;
var actionFilters = methodInfo.DeclaringType.CustomAttributes;
您将获得自定义属性。