public BridgeMethod <T> Bridge <TResult>(Expression <Func <T, TResult> > propertyAccessor) { var bridgeMethod = BridgeMethod <T> .Create(propertyAccessor); this.Methods.Add(bridgeMethod); return(bridgeMethod); }
public static BridgeMethod <T> Create <TResult>(Expression <Func <T, TResult> > propertyAccessor) { MemberExpression memberExpression = ExpressionPropertyAnalyzer.UnwrapLambda(propertyAccessor); if (!(memberExpression.Expression is ParameterExpression)) { throw new InvalidOperationException("Extended Properties are not allowed."); } var name = ExpressionPropertyAnalyzer.ExtractPropertyName(propertyAccessor); Action <T> changedCallback = me => me.OnPropertyChanged(name); Action <T> changingCallback = me => me.OnPropertyChanging(name); var method = new BridgeMethod <T>(changingCallback, changedCallback); return(method); }