如何在方法调用中分析属性

本文关键字:分析属性 调用 方法 | 更新日期: 2023-09-27 18:20:16

我有一个包含多个方法的对象。其中一些用[AuthenticationRequired]属性进行装饰。我应该在何时以及如何检查被调用者是否经过身份验证?

这只是一个简单的null检查,但我不知道如何将它挂接到实际的方法调用。我在这里有点迷路了。

Do I:

  1. 使用StackFrame,确定这个类上调用的顶级方法,然后找出可能的身份验证问题
  2. 是否在每个具有属性的方法中都包含此检查?那么,属性有什么好处呢
  3. 不知怎的,挂钩到我的类上的所有方法调用,弄清楚它们是否具有属性

类结构大致为:

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。