示例#1
0
 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());
 }