Пример #1
0
 private bool MethodNeedsOverride(TrustedMethodBase method, TrustedType type)
 {
     // Property code generator will sometimes pass in null
     if (method == null)
     {
         return(false);
     }
     return(method.IsAbstract && (method.IsPublic || method.IsFamily) && !IsOverridden(method, type));
 }
Пример #2
0
            private bool MethodSignaturesMatch(TrustedMethodBase method1, TrustedMethodBase method2)
            {
                if (method1.Name == method2.Name)
                {
                    TrustedParameterInfo[] params1 = method1.GetParameters();
                    TrustedParameterInfo[] params2 = method2.GetParameters();

                    if (params1.Length == params2.Length)
                    {
                        bool paramsMatch = true;
                        for (int n = 0; n < params1.Length; n++)
                        {
                            if (params1[n].ParameterType != params2[n].ParameterType)
                            {
                                paramsMatch = false;
                            }
                        }
                        return(paramsMatch);
                    }
                }
                return(false);
            }
Пример #3
0
            /// <summary>
            ///  Walk up the inheritance tree until we find an override
            /// or the class where the abstract method was defined
            /// </summary>
            private bool IsOverridden(TrustedMethodBase method, TrustedType type)
            {
                if (method.DeclaringType == type)
                {
                    return(false);
                }

                TrustedMethodInfo[] methods = type.GetMethods(flags);
                if (methods != null)
                {
                    foreach (TrustedMethodInfo info in methods)
                    {
                        if (MethodSignaturesMatch(info, method))
                        {
                            MethodBody body = info.GetMethodBody();
                            if (body != null)
                            {
                                return(true);
                            }
                        }
                    }
                }
                return(IsOverridden(method, type.BaseType));
            }
Пример #4
0
 protected MethodGeneratorBase(TrustedMethodBase method)
 {
     this.methodBase = method;
 }