public void SetValue(object obj, object value, object[] index)
        {
            if (this.setDelegate != null)
            {
                this.setDelegate(obj, value, index);

                return;
            }
            this.setDelegate = DynamicMethodHelper.CreateSetHandler(type, info);
            this.setDelegate(obj, value, index);
        }
        public PropertyProxy(PropertyInfo info) : base(info)
        {
            var getter = Info.GetGetMethod();

            if (getter != null)
            {
                var getterMethod = CreateGetter(Info.DeclaringType, Info.PropertyType, Info.DeclaringType, getter);
                m_propertyGetDelegate = (PropertyGetDelegate)getterMethod.CreateDelegate(typeof(PropertyGetDelegate));

                //m_propertySetDelegate = (PropertySetDelegate)
                //    Delegate.CreateDelegate(typeof(PropertySetDelegate), miSetter);
            }

            var setter = Info.GetSetMethod();

            if (setter != null)
            {
                var setterMethod = CreateSetter(Info.DeclaringType, Info.PropertyType, Info.DeclaringType, setter);
                m_propertySetDelegate = (PropertySetDelegate)setterMethod.CreateDelegate(typeof(PropertySetDelegate));
            }
        }
 public Property(PropertyGetDelegate get, PropertySetDelegate set)
 {
     _getDelegate = get;
     _setDelegate = set;
 }