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