有没有像c#的python装饰器?

时间:2012-11-07 11:54:25

标签: c# unity3d gree

我正在包装对API的调用,我的大部分方法都在第一行:

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

在python中,我会用类似@login_required的东西来装饰这些方法。

您会在c#

中使用什么来重构这种类型的逻辑?

3 个答案:

答案 0 :(得分:6)

您正在寻找一种称为面向方面编程的更通用编程方法的子集。

C#似乎通过几个库支持它,并且由于一些CLR功能,人们也可以推出自己的库。请参阅Aspect Oriented Programming using .NET,其中涵盖了其基本原则(我正在链接文章中关于C#细节的部分,但如果您正在寻找像PostSharp这样的现成解决方案,其余的同样有趣,如另一个答案所述)。

答案 1 :(得分:4)

您可以将任何AOP工具用于C#,例如this一个。

  

使用PostSharp,软件开发人员可以封装实现   将模式转换为称为方面的类,并将这些方面应用于它们   使用自定义属性的代码。

答案 2 :(得分:2)

我不熟悉python,但似乎你在寻找“属性”(MSDN),(这与Java注释非常相似)。

特别是,.NET提供了“AuthorizeAttribute”,它完全符合您的要求(可能还有更多)。虽然你不在.NET之下,但这仍然可以为你想要实现的实现提供一些启示。