我只想在设置属性时调用此方法。为什么这不起作用?
[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();
}
}
答案 0 :(得分:1)
如果您希望仅在属性设置器上应用方面,可以使用表达式“set _ *”过滤方法名称:
[DirtyTrackingAttribute(AttributeTargetMembers="set_*")]
PostSharp 1. *不支持明确的属性;属性访问器被认为是简单的方法。