Как реализовать IOperationFilter Swashbuckle, который обрабатывает пользовательские атрибуты в. NET Core - PullRequest
0 голосов
/ 01 марта 2020

Я реализовал Swashbuckle.Swagger.IOperationFilter для обработки пользовательских атрибутов, как описано здесь: { ссылка }

Теперь я хочу сделать нечто подобное для Swashbuckle.AspNetCore 5.0.0.

Похоже, класс ApiDescription не имеет метода расширения GetControllerAndActionAttributes, который использовался в исходной реализации. Я попытался переопределить его, взглянув на его исходный код , но он использует элементы ApiDescription.ActionDescriptor.ControllerDescriptor и ApiDescription.ActionDescriptor.GetCustomAttributes<TAttribute>, для которых я, кажется, не существую. NET Core.

Может Кто-нибудь поможет мне начать, показывая мне, как получить пользовательские атрибуты контроллера и действия из IOperationFilter?

Обновление Похоже, что реализация NET Framework имеет ActionDescriptor это на самом деле ReflectedActionDescriptor . Этот класс имеет конструктор, который принимает MethodInfo, который используется для поиска атрибутов.

Но я не вижу способа получить MethodInfo для. NET Реализации ядра Microsoft.AspNetCore. Mvc .Abstractions.ActionDescriptor .

1 Ответ

0 голосов
/ 01 марта 2020

Я нашел свой ответ: есть метод расширения ApiDescription.TryGetMethodInfo, который получит MethodInfo и, следовательно, даст доступ к пользовательским атрибутам.

...