如何在方法调用中分析属性
本文关键字:分析属性 调用 方法 | 更新日期: 2023-09-27 18:20:16
我有一个包含多个方法的对象。其中一些用[AuthenticationRequired]
属性进行装饰。我应该在何时以及如何检查被调用者是否经过身份验证?
这只是一个简单的null
检查,但我不知道如何将它挂接到实际的方法调用。我在这里有点迷路了。
Do I:
- 使用StackFrame,确定这个类上调用的顶级方法,然后找出可能的身份验证问题
- 是否在每个具有属性的方法中都包含此检查?那么,属性有什么好处呢
- 不知怎的,挂钩到我的类上的所有方法调用,弄清楚它们是否具有属性
类结构大致为:
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
几乎没有那么复杂,并且其中一个不能调用另一个(以便每个被调用者共享一个方法)。
你想过面向方面编程吗?您可以查看一些实现,例如:PostSharp或Castle。