// DynamicObject
        public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
        {
            for (var i = 0; i < _columns.Count; i++)
            {
                if (_columns[i].Name != binder.Name)
                {
                    continue;
                }

                if (!_columns[i].Type.IsInstanceOfType(binder.ReturnType))
                {
                    throw new ArgumentException(
                              $"Property '{binder.Name}' is not an instance of '{binder.ReturnType.FullName}'!");
                }

                if (value == null && Nullable.GetUnderlyingType(binder.ReturnType) == null)
                {
                    throw new ArgumentNullException($"Property '{binder.Name}' cannot be null!");
                }

                dynamic col = value;
                _columns[i] = col;
                return(true);
            }

            throw new ArgumentNullException($"Property '{binder.Name}' does not exist!");
        }
Example #2
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     if (IsColumns)
     {
         object[] dynamicColumns = DynamicColumns as object[];
         if (dynamicColumns == null)
         {
             throw ExceptionManager.MessageException("value为空或不为object[]对象!");
         }
         int index = Array.IndexOf(Columns, binder.Name);
         if (index >= 0)
         {
             dynamicColumns[index] = value;
         }
         else
         {
             throw ExceptionManager.MessageException("不存在此列!");
         }
     }
     else
     {
         if (dic.ContainsKey(binder.Name))
         {
             dic[binder.Name] = value;
         }
         else
         {
             dic.Add(binder.Name, value);
         }
         base.TrySetMember(binder, value);
     }
     return(true);
 }
Example #3
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     try
     {
         var p = t.GetProperty(binder.Name);
         if (p != null)
         {
             p.SetValue(null, value, null);
         }
         else
         {
             var f = t.GetField(binder.Name);
             if (f != null)
             {
                 f.SetValue(null, value);
             }
             else
             {
                 return(false);
             }
         }
         return(true);
     }
     catch (SystemException)
     {
         return(false);
     }
 }
        /// <summary>
        /// 实现动态对象属性值设置的方法。
        /// </summary>
        /// <param name="binder"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
        {
            var propertyName = binder.Name;
            var property     = DomainProperty.GetProperty(this.ObjectType, propertyName);

            SetValue(property, value);
            return(true);
        }
    public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
    {
        if (!_membersDict.ContainsKey(binder.Name))
        {
            return(false);
        }

        _membersDict[binder.Name] = value;
        return(true);
    }
Example #6
0
            public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
            {
                if (!_members.ContainsKey(binder.Name))
                {
                    _members.Add(binder.Name, value);
                    return(true);
                }

                return(base.TrySetMember(binder, value));
            }
Example #7
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     if (!this.Dictionary.ContainsKey(binder.Name))
     {
         this.Dictionary.Add(binder.Name, value);
     }
     else
     {
         this.Dictionary[binder.Name] = value;
     }
     return(true);
 }
Example #8
0
        public override System.Dynamic.DynamicMetaObject BindSetMember(System.Dynamic.SetMemberBinder binder, System.Dynamic.DynamicMetaObject value)
        {
            var parameters = new System.Linq.Expressions.Expression[]
            {
                System.Linq.Expressions.Expression.Constant(binder.Name),
                value.Expression,
            };

            var callMethod = CallMethod(setValueMethod, parameters);

            return(callMethod);
        }
Example #9
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     if (_dict.ContainsKey(binder.Name))
     {
         _dict[binder.Name] = value;
     }
     else
     {
         _dict.Add(binder.Name, value);
     }
     return(true);
 }
Example #10
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     if (data != null)
     {
         if (data.ContainsKey(binder.Name))
         {
             data[binder.Name] = value;
             return(true);
         }
     }
     else
     {
         list.GetType().InvokeMember(binder.Name, System.Reflection.BindingFlags.SetProperty, null, list, new object[] { value });
         return(true);
     }
     return(base.TrySetMember(binder, value));
 }
        public override bool TrySetMember
            (System.Dynamic.SetMemberBinder binder, object value)
        {
            if (this.readonly_mode)
            {
                throw new Exception("Cannot set this value at runtime");
            }

            if (!_memberdic.ContainsKey(binder.Name))
            {
                _memberdic.Add(binder.Name, value);
            }
            else
            {
                _memberdic[binder.Name] = value;
            }

            return(true);
        }
Example #12
0
        public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
        {
            // Find the element that match the field name requested
            XElement element = m_element.Element(binder.Name);

            // can only set elements that don't have child elements - ie, fields not tables
            if (element != null && !element.HasElements)
            {
                // mark the element has changed, for later use
                if (element.Attribute("changed") == null)
                {
                    element.Add(new XAttribute("changed", true));
                }
                // Do some simple input formatting - just dates, to make sure they travel across the wire properly
                // All other formats will be handled okay by the web service itself
                if (value is DateTime)
                {
                    element.Value = ((DateTime)value).ToString("s");
                }
                else if (value is DateTime?)
                {
                    if (value == null)
                    {
                        element.Value = "";
                    }
                    else
                    {
                        element.Value = ((DateTime?)value).Value.ToString("s");
                    }
                }
                else if (value != null)
                {
                    element.Value = value.ToString();
                }
                else
                {
                    element.Value = "";
                }
                return(true);
            }
            return(base.TrySetMember(binder, value));
        }
Example #13
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     System.Diagnostics.Debug.WriteLine("Enter: ", binder.Name);
     try
     {
         _innerType.InvokeMember(
             binder.Name,
             BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
             null, _innerObject, new object[] { value });
     }
     catch (MissingMemberException)
     {
         return(base.TrySetMember(binder, value));
     }
     finally
     {
         System.Diagnostics.Debug.WriteLine("Exit: ", binder.Name);
     }
     return(true);
 }
Example #14
0
        /// <summary>
        /// Provides the implementation for operations that set member values. Classes derived from the <see cref="T:System.Dynamic.DynamicObject" /> class can override this method to specify dynamic behavior for operations such as setting a value for a property.
        /// </summary>
        /// <param name="binder">Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject" /> class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive.</param>
        /// <param name="value">The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject" /> class, the <paramref name="value" /> is "Test".</param>
        /// <returns>
        /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.)
        /// </returns>
        public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
        {
            MemberInfo member = FindMember(binder.Name);

            //If we have a member then set that
            if (member != null)
            {
                switch (member.MemberType)
                {
                case MemberTypes.Field:
                    ((FieldInfo)member).SetValue(base.Target, value);
                    return(true);

                case MemberTypes.Property:
                    ((PropertyInfo)member).SetValue(base.Target, value);
                    return(true);

                case MemberTypes.Event:
                    //This will be handled by binary operation
                    return(true);
                }
            }
            return(base.TrySetMember(binder, value));
        }
Example #15
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     throw null;
 }
 /// <summary>
 /// Provides the implementation for operations that set member values.
 /// </summary>
 /// <param name="binder"> Provides information about the object that called the dynamic
 /// operation. </param>
 /// <param name="value"> The value to set to the member. </param>
 /// <returns> <c>true</c> if the operation is successful; otherwise, <c>false</c>. </returns>
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     this.obj[binder.Name] = value;
     return(true);
 }
Example #17
0
 /// <summary>
 /// Provides the implementation for operations that set member values. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations such as setting a value for a property.
 /// </summary>
 /// <param name="binder">Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive.</param>
 /// <param name="value">The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, the <paramref name="value"/> is "Test".</param>
 /// <returns>
 /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.)
 /// </returns>
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     return(true);
 }
 public override System.Dynamic.DynamicMetaObject BindSetMember(System.Dynamic.SetMemberBinder binder, System.Dynamic.DynamicMetaObject value)
 {
 }
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     this.ViewData[binder.Name.ToLower()] = value;
     return(true);
 }
 public virtual bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     return(default(bool));
 }
 public virtual System.Dynamic.DynamicMetaObject BindSetMember(System.Dynamic.SetMemberBinder binder, System.Dynamic.DynamicMetaObject value)
 {
     return(default(System.Dynamic.DynamicMetaObject));
 }
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     Patch(this, binder.Name, value);
     return(base.TrySetMember(binder, value));
 }
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     _thisDict[binder.Name] = value;
     NotifyPropertyChanged(binder.Name);
     return(true);
 }
Example #24
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     dictionary[binder.Name.ToLower()] = value;
     return(true);
 }
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, Object value)
 {
     return(default(bool));
 }
 public virtual System.Dynamic.DynamicMetaObject BindSetMember(System.Dynamic.SetMemberBinder binder, System.Dynamic.DynamicMetaObject value)
 {
     throw null;
 }
 public virtual bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     throw null;
 }
Example #28
0
 public override bool TrySetMember(System.Dynamic.SetMemberBinder binder, object value)
 {
     IsDirty = true;
     _ChangedTracking[binder.Name] = value;
     return(true);
 }