Example #1
0
            private static MemberInfo[] FilterInvalidMembers(MemberInfo[] Members)
            {
                if ((Members == null) || (Members.Length == 0))
                {
                    return(null);
                }
                int num2  = 0;
                int index = 0;
                int num4  = Members.Length - 1;

                for (index = 0; index <= num4; index++)
                {
                    PropertyInfo    info3;
                    ParameterInfo[] destinationArray = null;
                    Type            returnType       = null;
                    switch (Members[index].MemberType)
                    {
                    case MemberTypes.Constructor:
                    case MemberTypes.Method:
                    {
                        MethodInfo info = (MethodInfo)Members[index];
                        destinationArray = info.GetParameters();
                        returnType       = info.ReturnType;
                        goto Label_00F9;
                    }

                    case MemberTypes.Field:
                        returnType = ((FieldInfo)Members[index]).FieldType;
                        goto Label_00F9;

                    case MemberTypes.Property:
                    {
                        info3 = (PropertyInfo)Members[index];
                        MethodInfo getMethod = info3.GetGetMethod();
                        if (getMethod == null)
                        {
                            break;
                        }
                        destinationArray = getMethod.GetParameters();
                        goto Label_00DF;
                    }

                    default:
                        goto Label_00F9;
                    }
                    ParameterInfo[] parameters = info3.GetSetMethod().GetParameters();
                    destinationArray = new ParameterInfo[(parameters.Length - 2) + 1];
                    Array.Copy(parameters, destinationArray, destinationArray.Length);
Label_00DF:
                    returnType = info3.PropertyType;
Label_00F9:
                    if (Symbols.AreParametersAndReturnTypesValid(destinationArray, returnType))
                    {
                        num2++;
                    }
                    else
                    {
                        Members[index] = null;
                    }
                }
                if (num2 == Members.Length)
                {
                    return(Members);
                }
                if (num2 <= 0)
                {
                    return(null);
                }
                MemberInfo[] infoArray4 = new MemberInfo[(num2 - 1) + 1];
                int          num3       = 0;
                int          num5       = Members.Length - 1;

                for (index = 0; index <= num5; index++)
                {
                    if (Members[index] != null)
                    {
                        infoArray4[num3] = Members[index];
                        num3++;
                    }
                }
                return(infoArray4);
            }