我正在包装对 API 的调用,我的大多数方法都在第一行:
if ( !Gree.Authorizer.IsAuthorized() )
{
return;
}
在 python 中,我会用类似@login_required
.
你会用什么来重构这种类型的逻辑c#
?
您正在寻找一种称为面向方面编程的更通用编程方法的子集。
C# 似乎通过几个库来支持它,而且由于一些 CLR 特性,也可以推出自己的库。请参阅Aspect Oriented Programming using .NET,它涵盖了它的基本原理(我正在链接文章中讨论 C# 细节的部分,但如果您正在寻找像 PostSharp 这样的现成解决方案,其余部分同样有趣,正如另一个回答)。
您可以使用任何用于 C# 的 AOP 工具,例如这个。
使用 PostSharp,软件开发人员可以将实现模式封装到称为方面的类中,并使用自定义属性将这些方面应用到他们的代码中。
我不熟悉 python,但您似乎正在寻找“属性”(MSDN),(与 Java 注释非常相似)。
特别是,.NET 提供了“ AuthorizeAttribute ”,它完全可以满足您的需求(也许还有更多)。虽然您不在 .NET 下,但这可能仍会为您尝试实现的实现提供一些启示。