Catel.Fody.CatelType.RecursiveFindMethod C# (CSharp) Method

RecursiveFindMethod() private method

private RecursiveFindMethod ( Mono.Cecil.TypeDefinition typeDefinition, string methodName, string parameterNames = null, bool findGenericDefinition = false ) : MethodReference
typeDefinition Mono.Cecil.TypeDefinition
methodName string
parameterNames string
findGenericDefinition bool
return Mono.Cecil.MethodReference
        private MethodReference RecursiveFindMethod(TypeDefinition typeDefinition, string methodName, string[] parameterNames = null, bool findGenericDefinition = false)
        {
            var typeDefinitions = new Stack<TypeDefinition>();
            MethodDefinition methodDefinition;
            var currentTypeDefinition = typeDefinition;

            do
            {
                typeDefinitions.Push(currentTypeDefinition);

                if (FindMethodDefinition(currentTypeDefinition, methodName, parameterNames, findGenericDefinition, out methodDefinition))
                {
                    break;
                }

                var baseType = currentTypeDefinition.BaseType;
                if (baseType == null || baseType.FullName == "System.Object")
                {
                    return null;
                }

                currentTypeDefinition = baseType.ResolveType();
            }
            while (true);

            return methodDefinition.GetMethodReference(typeDefinitions);
        }