15

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

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

在 python 中,我会用类似@login_required.

你会用什么来重构这种类型的逻辑c#

4

3 回答 3

6

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

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

于 2012-11-07T12:08:04.093 回答
4

您可以使用任何用于 C# 的 AOP 工具,例如这个

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

于 2012-11-07T11:59:45.053 回答
2

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

特别是,.NET 提供了“ AuthorizeAttribute ”,它完全可以满足您的需求(也许还有更多)。虽然您不在 .NET 下,但这可能仍会为您尝试实现的实现提供一些启示。

于 2012-11-07T12:17:11.033 回答