Catel.Fody.CecilExtensions.GetMethodReference C# (CSharp) Method

GetMethodReference() public static method

public static GetMethodReference ( this methodDefinition, Stack typeDefinitions ) : MethodReference
methodDefinition this
typeDefinitions Stack
return Mono.Cecil.MethodReference
        public static MethodReference GetMethodReference(this MethodDefinition methodDefinition, Stack<TypeDefinition> typeDefinitions)
        {
            var methodReference = FodyEnvironment.ModuleDefinition.Import(methodDefinition).GetGeneric();

            if (methodDefinition.IsStatic)
            {
                return methodReference;
            }

            typeDefinitions.Pop();
            while (typeDefinitions.Count > 0)
            {
                var definition = typeDefinitions.Pop();

                // Only call lower class if possible
                var containsMethod = (from method in definition.Methods
                                      where method.Name == methodDefinition.Name
                                      select method).Any();
                if (containsMethod)
                {
                    methodReference = methodReference.MakeGeneric(definition.BaseType);
                }
            }

            return methodReference;
        }
    }