Esempio n. 1
0
        static MethodInfo GetParent(MethodInfo method)
        {
            if (!method.IsVirtual)
                return null;

            var baseType = method.DeclaringType.BaseType;
            if (baseType == null)
                return null;

            var methodParameters = method.GetParameters().Select(p => p.ParameterType).ToArray();
            var methodGenericArgCount = method.GetGenericArguments().Length;

            return baseType.GetMethods(method.GetBindingFlags())
                           .SingleOrDefault(m => m.Name == method.Name
                                              && m.GetGenericArguments().Length == methodGenericArgCount
                                              && TypeListComparer.Equals(m.GetParameters().Select(p => p.ParameterType).ToArray(), methodParameters));
        }
Esempio n. 2
0
        static MethodInfo GetParent(MethodInfo m)
        {
            if (!m.IsVirtual)
                return null;

            var baseType = m.DeclaringType.BaseType;
            if (baseType == null)
                return null;

            return baseType.GetMethod(m.Name, m.GetBindingFlags(), null, m.GetParameters().Select(p => p.ParameterType).ToArray(), null);
        }