首页 > 解决方案 > 如何在 .NET Core 中实现处理自定义属性的 Swashbuckle IOperationFilter

问题描述

我已经实现了一个Swashbuckle.Swagger.IOperationFilter来处理自定义属性,如下所述:https ://stackoverflow.com/a/52948376/13087

我现在想做类似的事情Swashbuckle.AspNetCore 5.0.0

该类似乎ApiDescription没有GetControllerAndActionAttributes在原始实现中使用的扩展方法。我尝试通过查看它的源代码来重新实现它,但它使用成员ApiDescription.ActionDescriptor.ControllerDescriptor并且ApiDescription.ActionDescriptor.GetCustomAttributes<TAttribute>我似乎不存在于 .NET Core 中。

任何人都可以通过向我展示如何获取自定义控制器和操作属性来帮助我入门IOperationFilter吗?

更新 看起来 .NET Framework 实现有一个ActionDescriptor实际上是ReflectedActionDescriptor。这个类有一个构造函数,它接受一个MethodInfo用于查找属性的构造函数。

但我看不到任何方法来获得MethodInfo.NET Core 实现Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor

标签: asp.net-coreasp.net-core-2.1swashbuckleswashbuckle.aspnetcore

解决方案


我找到了答案:有一个扩展方法ApiDescription.TryGetMethodInfo可以获取MethodInfo并因此可以访问自定义属性。


推荐阅读