Ejemplo n.º 1
0
        public override void SetValue(Object obj, Object value, Object[] index)
        {
            MethodInfo setter =
                ClrHelpers.GetSemantics(privateData,
                                        MethodSemanticsAttributes.Setter,
                                        true);

            if (setter == null)
            {
                throw new ArgumentException
                          (_("Reflection_NoPropertySet"));
            }
            Object[] parameters;
            if (index == null)
            {
                parameters    = new Object [1];
                parameters[0] = value;
            }
            else
            {
                parameters = new Object [index.Length + 1];
                Array.Copy(index, parameters, index.Length);
                parameters[index.Length] = value;
            }
            setter.Invoke(obj, BindingFlags.Default,
                          Type.DefaultBinder, parameters, null);
        }
Ejemplo n.º 2
0
        // Get an array of all accessor methods on this property.
        public override MethodInfo[] GetAccessors(bool nonPublic)
        {
            MethodInfo getter =
                ClrHelpers.GetSemantics(privateData,
                                        MethodSemanticsAttributes.Getter,
                                        nonPublic);
            MethodInfo setter =
                ClrHelpers.GetSemantics(privateData,
                                        MethodSemanticsAttributes.Setter,
                                        nonPublic);
            MethodInfo other =
                ClrHelpers.GetSemantics(privateData,
                                        MethodSemanticsAttributes.Other,
                                        nonPublic);
            int size = ((getter != null) ? 1 : 0) +
                       ((setter != null) ? 1 : 0) +
                       ((other != null) ? 1 : 0);

            MethodInfo[] array = new MethodInfo [size];
            int          posn  = 0;

            if (getter != null)
            {
                array[posn++] = getter;
            }
            if (setter != null)
            {
                array[posn++] = setter;
            }
            if (other != null)
            {
                array[posn++] = other;
            }
            return(array);
        }
Ejemplo n.º 3
0
        // Get the index parameters for this property.
        public override ParameterInfo[] GetIndexParameters()
        {
            MethodInfo method =
                ClrHelpers.GetSemantics(privateData,
                                        MethodSemanticsAttributes.Getter,
                                        true);

            if (method != null)
            {
                return(method.GetParameters());
            }
            method =
                ClrHelpers.GetSemantics(privateData,
                                        MethodSemanticsAttributes.Setter,
                                        true);
            if (method != null)
            {
                ParameterInfo[] parameters = method.GetParameters();
                ParameterInfo[] newParams;
                if (parameters != null && parameters.Length >= 1)
                {
                    newParams = new ParameterInfo [parameters.Length - 1];
                    Array.Copy(parameters, newParams, newParams.Length);
                    return(newParams);
                }
            }
            throw new MethodAccessException
                      (_("Reflection_NoPropertyAccess"));
        }
Ejemplo n.º 4
0
 // Get the add method for this event.
 public override MethodInfo GetAddMethod(bool nonPublic)
 {
     return(ClrHelpers.GetSemantics
                (privateData,
                MethodSemanticsAttributes.AddOn,
                nonPublic));
 }
Ejemplo n.º 5
0
        public override Object GetValue(Object obj, Object[] index)
        {
            MethodInfo getter =
                ClrHelpers.GetSemantics(privateData,
                                        MethodSemanticsAttributes.Getter,
                                        true);

            if (getter == null)
            {
                throw new ArgumentException
                          (_("Reflection_NoPropertyGet"));
            }
            return(getter.Invoke(obj, BindingFlags.Default,
                                 Type.DefaultBinder, index, null));
        }