c# - Spring AOP + MVVM Foundation + PropertyChanged -


i'm using spring.net 1.3.1 alongside mvvm foundation apply cross-cutting viewmodels. i've noticed if assign property changed handler before object converted proxy cross-cutting proxy engine not apply property changed handler proxy. know if expected behavior , if so, if there workaround?

my factory looks this

public static class aopproxyfactory {     public static object getproxy(object target) {         var factory = new proxyfactory(target);          factory.addadvisor(new spring.aop.support.defaultpointcutadvisor(                                 new attributematchmethodpointcut(typeof(attributestoringmethod)),                                 new unitvalidationbeforeadvice())                            );          factory.addadvice(new notifypropertychangedadvice());         factory.proxytargettype = true;          return factory.getproxy();     } } 

the advices this

    public class unitvalidationbeforeadvice : imethodbeforeadvice {     public unitvalidationbeforeadvice() {                 }      public void before(methodinfo method, object[] args, object target) {         if (args.length != 1) {             throw new argumentexception("the args collection not valid!");         }          var canconvertto = true;         if (!canconvertto) {             throw new argumentexception("the '{0}' cannot converted.");         }     } }  public class notifypropertychangedadvice : iafterreturningadvice, inotifypropertychanged {     public event propertychangedeventhandler propertychanged;      public void afterreturning(object returnvalue, methodinfo method, object[] args, object target) {         if (method.name.startswith("set_")) {             raisepropertychanged(target, method.name.substring("set_".length));         }     }      private void raisepropertychanged(object target, string propertyname) {         if (propertychanged != null)             propertychanged(target, new propertychangedeventargs(propertyname));     } } 

the object i'm proxying this

    public class proxytypeobject : observableobject {     private string whocaresitsbroke;     public string whocaresitsbroke {         { return whocaresitsbroke; }         set {             whocaresitsbroke = value;             raisepropertychanged("whocaresitsbroke");         }     } } 

and calling code

var pto = new proxytypeobject();                 pto.whocaresitsbroke = "boohoo";                 pto.propertychanged += (object sender, system.componentmodel.propertychangedeventargs e) => {                     return;                 };                  var proxy = aopproxyfactory.getproxy(pto);                 (proxy proxytypeobject).whocaresitsbroke = "boohoo2"; 

you notice when set "whocaresitsbroke" property property changed handler hooked never hit. (i tried using notifypropertychangedadvice provided in spring.net forums not appear work.)

it seems spring examples spring.aopquickstart\src\spring.aopquickstart.step6 samething trying (intercepting [autogenerated] setter of property). might want have @ the source of example.


Comments