Что не так с этим аспектом - PullRequest
0 голосов
/ 26 мая 2009

Я хочу, чтобы это вызывалось только когда свойство установлено. Почему это не работает?

[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 Ответ

1 голос
/ 27 мая 2009

Если вы хотите, чтобы аспект применялся только к установщикам свойств, вы можете отфильтровать имя метода с помощью выражения "set _ *":

[DirtyTrackingAttribute(AttributeTargetMembers="set_*")]

PostSharp 1. * не поддерживает явно свойства; средства доступа к свойствам рассматриваются как простые методы.

...