首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从方法和控制器获取所有CustomAttributes,在IDocumentFilter中,swagger网络内核,swagger

从方法和控制器获取所有CustomAttributes,在IDocumentFilter中,swagger网络内核,swagger
EN

Stack Overflow用户
提问于 2019-09-17 13:45:56
回答 1查看 2.8K关注 0票数 5

版本:

  • 项目:ASP.NETCore2.1,Web
  • 包: Swashbuckle.AspNetCore (4.0.1)

问题:

我创建了一个CheckIncludeForOperationFilter类,它继承了Swashbuckle.AspNetCore.Swagger.IDocumentFilter,并实现了这个接口所需的惟一方法-- public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)

这门课该做什么?

它应该搜索IncludeForAttribute。这意味着我应该检查API中的操作是否具有此属性或整个控制器。

我有什么?

代码语言:javascript
运行
复制
public class CheckIncludeForOperationFilter : IDocumentFilter
{
    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
    {            
        foreach (var apiDescription in context.ApiDescriptions)
        {

        }
    }
}

在这里,当我以调试模式启动程序时,事情变得有趣起来,我可以清楚地看到apiDescription有什么对象。它包含了我搜索的所有东西。以下是操作属性:

apiDescription.ActionDescriptor.MethodInfo.CustomAttributes

以及所有Controller属性:

apiDescription.ActionDescriptor.MethodInfo.DeclaringType.CustomAttributes

问题是,编译器在调试中显示属性MethodInfo,但在编写它时缺少它。它是用红色突出显示的,我无法访问它:

我如何获得所有属性?

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-17 14:31:16

您可以尝试这种方法:

代码语言:javascript
运行
复制
MethodInfo methodInfo;
var ss = apiDescription.TryGetMethodInfo(out methodInfo);
var controllerFilters = methodInfo.DeclaringType.CustomAttributes;
var actionFilters = methodInfo.DeclaringType.CustomAttributes;

您将得到您的自定义属性。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57975670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档