这方面有什么不对

时间:2009-05-26 16:04:43

标签: c# aop postsharp

我只想在设置属性时调用此方法。为什么这不起作用?

[DirtyTrackingAttribute(AttributeTargetElements =
   PostSharp.Extensibility.MulticastTargets.Property)]
class Program
{

    public static string Test { get; set; }

    static void Main(string[] args)
    {
        TestIt();
        Test = "foo";
        Console.ReadKey();
    }

    private static void TestIt()
    {
      Console.WriteLine("Real method called");
    }
}

[Serializable]
public class DirtyTrackingAttribute : OnMethodInvocationAspect
{
    public override void OnInvocation(MethodInvocationEventArgs eventArgs)
    {
        Console.WriteLine("Property invoked");
        eventArgs.Proceed();
    }
}

1 个答案:

答案 0 :(得分:1)

如果您希望仅在属性设置器上应用方面,可以使用表达式“set _ *”过滤方法名称:

[DirtyTrackingAttribute(AttributeTargetMembers="set_*")]

PostSharp 1. *不支持明确的属性;属性访问器被认为是简单的方法。