private void ImplProperty(PropertyInfo pi) { var propertychangedRaiser = FindOnPropertyChangedMethod(pi); // public int IntProperty ImplProperty( pi, getter => { // get using (var c = getter.Code()) { // return _target.IntProperty; c.Return(_target.Property(pi)); } }, setter => { // set using (var c = setter.Code()) { if (propertychangedRaiser == null) { // _target.IntProperty = value; c.Assign(_target.Property(pi), setter.Value); return; } // if (_target.IntProperty != value) c.If(c.AreNotEqual(_target.Property(pi, setter.Args.AsOperands()), setter.Value)); { // _target.IntProperty = value; c.Assign(_target.Property(pi), setter.Value); // FirePropertyChanged("IntProperty"); c.Call(_proxy.This.Invoke(propertychangedRaiser, g.Const(pi.Name))); } c.End(); } }); }