Есть что-то вроде декораторов python для С#?
Я переношу вызовы в API и большинство моих методов имеют в своих первых строках:
if ( !Gree.Authorizer.IsAuthorized() )
{
return;
}
В python я бы украсил эти методы чем-то вроде @login_required
.
Что бы вы использовали для рефакторинга этого типа логики в c#
?
Ответы
Ответ 1
Вы ищете подмножество более общей методологии программирования, называемой Aspect Oriented Programming.
С#, похоже, поддерживает его через несколько библиотек, а также можно развернуть его, благодаря некоторым функциям CLR. См. Аспектно-ориентированное программирование с использованием .NET, которое охватывает его основные принципы (я связываю часть статьи с описанием особенностей С#, но остальные одинаково интересно, если вы ищете готовые решения, такие как PostSharp, как упоминалось в другом ответе).
Ответ 2
Вы можете использовать любой инструмент AOP для С#, например этот.
С PostSharp разработчики программного обеспечения могут инкапсулировать реализацию шаблонов в классы, называемые аспектами, и применять эти аспекты к их код с использованием настраиваемых атрибутов.
Ответ 3
Я не знаком с python, но, похоже, вы ищете "атрибуты" (MSDN) (которые очень похожи к аннотациям Java).
В частности,.NET предоставляет " AuthorizeAttribute", который делает именно то, что вы хотите (и, возможно, немного больше). Хотя вы не находитесь в .NET, это может все же пролить некоторый свет в реализации, которую вы пытаетесь достичь.