internal static Property <T> Create <T>(this IReactor reactor, string name, Func <T> valueFunc, params IProperty[] fromProperties) { var property = reactor.Create <T>(name, valueFunc()); reactor.WhenPropertiesChange(fromProperties).Subscribe(coll => property.Value = valueFunc()); return(property); }
public static Property <T> Create <T>(this IReactor reactor, string name, Expression <Func <T> > valueExpression) { Func <T> compiled = valueExpression.Compile(); //Get value from compiled now to provide the default value: var property = reactor.Create <T>(name, compiled()); UsedPropertyChain[] properties = ExpressionHelper.GetUsedPropertiesAndAttachListeners(valueExpression); React.WhenAnyPropertyChanges(properties).Subscribe(unit => property.Value = compiled()); return(property); }
public static Property <T> Create <T>(this IReactor reactor, Expression <Func <T> > nameExpression, Expression <Func <T> > valueExpression) { string propertyName = ExpressionHelper.GetNameFromExpression(nameExpression); return(reactor.Create <T>(propertyName, valueExpression)); }
public static Property <T> Create <T>(this IReactor reactor, Expression <Func <T> > nameExpression, T defaultValue = default(T)) { string propertyName = ExpressionHelper.GetNameFromExpression(nameExpression); return(reactor.Create <T>(propertyName, defaultValue)); }