0

我只希望在设置属性时调用它。为什么这不起作用?

[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();
    }
}
4

1 回答 1

1

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

[DirtyTrackingAttribute(AttributeTargetMembers="set_*")]

PostSharp 1.* 不支持明确的属性;属性访问器被视为普通方法。

于 2009-05-27T07:20:13.810 回答