Есть что-то вроде декораторов python для С#? - программирование
Подтвердить что ты не робот

Есть что-то вроде декораторов python для С#?

Я переношу вызовы в API и большинство моих методов имеют в своих первых строках:

if ( !Gree.Authorizer.IsAuthorized() )
{
    return;
}

В python я бы украсил эти методы чем-то вроде @login_required.

Что бы вы использовали для рефакторинга этого типа логики в c#?

4b9b3361

Ответ 1

Вы ищете подмножество более общей методологии программирования, называемой Aspect Oriented Programming.

С#, похоже, поддерживает его через несколько библиотек, а также можно развернуть его, благодаря некоторым функциям CLR. См. Аспектно-ориентированное программирование с использованием .NET, которое охватывает его основные принципы (я связываю часть статьи с описанием особенностей С#, но остальные одинаково интересно, если вы ищете готовые решения, такие как PostSharp, как упоминалось в другом ответе).

Ответ 2

Вы можете использовать любой инструмент AOP для С#, например этот.

С PostSharp разработчики программного обеспечения могут инкапсулировать реализацию шаблонов в классы, называемые аспектами, и применять эти аспекты к их код с использованием настраиваемых атрибутов.

Ответ 3

Я не знаком с python, но, похоже, вы ищете "атрибуты" (MSDN) (которые очень похожи к аннотациям Java).

В частности,.NET предоставляет " AuthorizeAttribute", который делает именно то, что вы хотите (и, возможно, немного больше). Хотя вы не находитесь в .NET, это может все же пролить некоторый свет в реализации, которую вы пытаетесь достичь.