static public void SetToObject <TModel, TView, TComponent, TBindingCollection>( this IBindingBuilder <TModel, TView, TComponent, TBindingCollection> builder, Func <TView, GlyphObject> objectGetter) where TView : class, IGlyphComponent where TComponent : IGlyphComponent { builder.Do((m, v) => objectGetter(v).SetKeyedComponent('%' + builder.Name, builder.Getter(m, v))); }
static public void Do <TModel, TView, TModelValue>( this IBindingBuilder <TModel, TView, TModelValue> builder, Action <TModelValue, TModel, TView> action) { Func <TModel, TView, TModelValue> getter = builder.Getter; builder.Do((m, v) => action(getter(m, v), m, v)); }
static public void To <TModel, TView, TModelValue>( this IBindingBuilder <TModel, TView, TModelValue> binding, Expression <Func <TView, TModelValue> > viewGetterExpression, IInjectionExpression injectionExpression = null) { var memberExpression = (MemberExpression)viewGetterExpression.Body; var propertyInfo = (PropertyInfo)memberExpression.Member; Delegate targetSelector = Expression.Lambda(memberExpression.Expression, viewGetterExpression.Parameters).Compile(); InjectableProperty <TView, TModelValue> injectable = propertyInfo.AsInjectable <TView, TModelValue>(targetSelector, injectionExpression); Func <TModel, TView, TModelValue> getter = binding.Getter; binding.Do((m, v) => injectable.Inject(v, getter(m, v))); }
static public void Do <TModel, TView>( this IBindingBuilder <TModel, TView> builder, Action action) { builder.Do((m, v) => action()); }