MethodGenerifier.GetMethodReference C# (CSharp) Method

GetMethodReference() public method

public GetMethodReference ( Stack typeDefinitions, MethodDefinition methodDefinition ) : MethodReference
typeDefinitions Stack
methodDefinition MethodDefinition
return Mono.Cecil.MethodReference
    public MethodReference GetMethodReference(Stack<TypeDefinition> typeDefinitions, MethodDefinition methodDefinition)
    {
        try
        {
            var methodReference = moduleReader.Module.Import(methodDefinition).GetGeneric();
            typeDefinitions.Pop();
            while (typeDefinitions.Count > 0)
            {
                var definition = typeDefinitions.Pop();
                methodReference = MakeGeneric(definition.BaseType, methodReference);
            }
            return methodReference;
        }
        catch (Exception exception)
        {
            throw new Exception(string.Format("Could not make method generic '{0}'.", methodDefinition.GetName()), exception);
        }
    }

Usage Example

    public EventInvokerMethod RecursiveFindMethod(TypeDefinition typeDefinition)
    {
        var typeDefinitions = new Stack <TypeDefinition>();
        MethodDefinition methodDefinition;
        var currentTypeDefinition = typeDefinition;

        do
        {
            typeDefinitions.Push(currentTypeDefinition);

            if (FindEventInvokerMethodDefinition(currentTypeDefinition, out methodDefinition))
            {
                break;
            }
            var baseType = currentTypeDefinition.BaseType;

            if (baseType == null || baseType.FullName == "System.Object")
            {
                return(null);
            }
            currentTypeDefinition = typeResolver.Resolve(baseType);
        } while (true);

        return(new EventInvokerMethod
        {
            MethodReference = methodGenerifier.GetMethodReference(typeDefinitions, methodDefinition),
            IsBeforeAfter = IsBeforeAfterMethod(methodDefinition),
        });
    }
All Usage Examples Of MethodGenerifier::GetMethodReference