C# 如何分析方法调用的属性?
我有一个有几种方法的对象。其中一些用C# 如何分析方法调用的属性?,c#,reflection,attributes,C#,Reflection,Attributes,我有一个有几种方法的对象。其中一些用[AuthenticationRequired]属性修饰。何时以及如何检查被叫方是否经过身份验证 这只是一个简单的null检查,但我不知道如何将它与实际的方法调用挂钩。我有点迷路了 我是否: ,确定在此类上调用的顶级方法,然后找出可能的身份验证问题 是否在每个具有该属性的方法中都包含此检查?那么,这种属性有什么好处呢 以某种方式钩住类上的所有方法调用,弄清楚它们是否具有该属性 班级结构大致如下: public class Stuff { public
[AuthenticationRequired]
属性修饰。何时以及如何检查被叫方是否经过身份验证
这只是一个简单的null
检查,但我不知道如何将它与实际的方法调用挂钩。我有点迷路了
我是否:
public class Stuff
{
public void ImFine()
{
CommonMethod("fine");
}
public void ImGood()
{
CommonMethod("good");
}
[AuthenticationRequired]
public void ImTerrible()
{
CommonMethod("terrible", true); // not an optional parameter.
}
[AuthenticationRequired]
public void ImDeceased()
{
CommonMethod("dead");
}
protected void CommonMethod(string state)
{
Console.WriteLine(string.Format("I feel {0}", state));
}
protected void CommonMethod(string state, bool pet)
{
if (pet)
{
Console.WriteLine(string.Format("My pet feels {0}", state));
}
else
{
Console.WriteLine(string.Format("I feel {0}", state));
}
}
}
假设
CommonMethod
稍微复杂一点,一个不能调用另一个(为了让每个被调用方共享一个方法)。您考虑过面向方面编程吗?您可以看看一些实现,例如:或。那么属性有什么好处呢?
我想不出多少。您需要一个AOP风格的工具,以便重写方法IL以注入授权检查代码。PostSharp很受欢迎。