예제 #1
0
        public override bool Equals(object obj)
        {
            VirtualParameter other = obj as VirtualParameter;

            if (other == null)
            {
                return(false);
            }

            // Do we need to compare Name and ParameterType?
            return
                (Member == other.Member &&
                 Position == other.Position &&
                 ParameterType == other.ParameterType);
        }
예제 #2
0
        internal static ParameterInfo[] CloneParameters(MemberInfo member, ParameterInfo[] parameters, bool skipLastParameter)
        {
            int length = parameters.Length;

            if (skipLastParameter)
            {
                length--;
            }

            ParameterInfo[] clonedParameters = new ParameterInfo[length];

            for (int i = 0; i < length; i++)
            {
                ParameterInfo parameter = parameters[i];
                clonedParameters[i] = new VirtualParameter(member, parameter.ParameterType, parameter.Name, parameter.Position);
            }

            return(clonedParameters);
        }
예제 #3
0
        private ParameterInfo[] GetIndexParametersNoCopy()
        {
            if (_indexedParameters == null)
            {
                MethodInfo method = GetGetMethod(true);
                if (method != null)
                {
                    _indexedParameters = VirtualParameter.CloneParameters(this, method.GetParameters(), skipLastParameter: false);
                }
                else
                {
                    method = GetSetMethod(true);

                    Contract.Assert(null != method);
                    _indexedParameters = VirtualParameter.CloneParameters(this, method.GetParameters(), skipLastParameter: true);
                }
            }

            return(_indexedParameters);
        }