public object GetValue(object obj, object[] index)
 {
     if (this.getDelegate != null)
     {
         return(this.getDelegate(obj, index));
     }
     this.getDelegate = DynamicMethodHelper.CreateGetHandler(type, info);
     return(this.getDelegate(obj, 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;
 }