Beispiel #1
0
            private static MemberInfo[] FilterInvalidMembers(MemberInfo[] Members)
            {
                if (Members == null || Members.Length == 0)
                {
                    return((MemberInfo[])null);
                }
                int num1   = 0;
                int num2   = 0;
                int num3   = checked (Members.Length - 1);
                int index1 = num2;

                while (index1 <= num3)
                {
                    ParameterInfo[] Parameters = (ParameterInfo[])null;
                    Type            ReturnType = (Type)null;
                    switch (Members[index1].MemberType)
                    {
                    case MemberTypes.Constructor:
                    case MemberTypes.Method:
                        MethodInfo member1 = (MethodInfo)Members[index1];
                        Parameters = member1.GetParameters();
                        ReturnType = member1.ReturnType;
                        break;

                    case MemberTypes.Field:
                        ReturnType = ((FieldInfo)Members[index1]).FieldType;
                        break;

                    case MemberTypes.Property:
                        PropertyInfo member2   = (PropertyInfo)Members[index1];
                        MethodInfo   getMethod = member2.GetGetMethod();
                        if (getMethod != null)
                        {
                            Parameters = getMethod.GetParameters();
                        }
                        else
                        {
                            ParameterInfo[] parameters = member2.GetSetMethod().GetParameters();
                            Parameters = new ParameterInfo[checked (parameters.Length - 2 + 1)];
                            Array.Copy((Array)parameters, (Array)Parameters, Parameters.Length);
                        }
                        ReturnType = member2.PropertyType;
                        break;
                    }
                    if (Symbols.AreParametersAndReturnTypesValid(Parameters, ReturnType))
                    {
                        checked { ++num1; }
                    }
                    else
                    {
                        Members[index1] = (MemberInfo)null;
                    }
                    checked { ++index1; }
                }
                if (num1 == Members.Length)
                {
                    return(Members);
                }
                if (num1 <= 0)
                {
                    return((MemberInfo[])null);
                }
                MemberInfo[] memberInfoArray = new MemberInfo[checked (num1 - 1 + 1)];
                int          index2          = 0;
                int          num4            = 0;
                int          num5            = checked (Members.Length - 1);
                int          index3          = num4;

                while (index3 <= num5)
                {
                    if (Members[index3] != null)
                    {
                        memberInfoArray[index2] = Members[index3];
                        checked { ++index2; }
                    }
                    checked { ++index3; }
                }
                return(memberInfoArray);
            }