Catel.Data.DynamicObservableObjectMetaObject.BindSetMember C# (CSharp) Метод

BindSetMember() публичный Метод

Performs the binding of the dynamic set member operation.
public BindSetMember ( SetMemberBinder binder, DynamicMetaObject value ) : DynamicMetaObject
binder System.Dynamic.SetMemberBinder An instance of the that represents the details of the dynamic operation.
value System.Dynamic.DynamicMetaObject The representing the value for the set member operation.
Результат System.Dynamic.DynamicMetaObject
        public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value)
        {
            var propertyName = binder.Name;
            var propertyType = binder.ReturnType;

            var valueExpression = Expression.Convert(value.Expression, typeof(object));
            var parameters = new Expression[]
            {
                Expression.Constant(propertyName),
                valueExpression
            };

            var self = Expression.Convert(Expression, LimitType);
            var methodCall = Expression.Call(self, _setValueMethodInfo, parameters);

            // Note: required because we must return a value as well
            var finalExpression = Expression.Block(methodCall, valueExpression);
            var restrictions = BindingRestrictions.GetTypeRestriction(Expression, LimitType);

            var setValue = new DynamicMetaObject(finalExpression, restrictions);
            return setValue;
        }