GetMethodReference() public method

public GetMethodReference ( Stack typeDefinitions, MethodDefinition methodDefinition ) : MethodReference
typeDefinitions Stack
methodDefinition MethodDefinition
return Mono.Cecil.MethodReference
Exemplo n.º 1
0
    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),
        });
    }
Exemplo n.º 2
0
    IEnumerable <MethodReference> GetOnChangedMethods(TypeNode notifyNode)
    {
        var methods = notifyNode.TypeDefinition.Methods;

        return(methods.Where(x => !x.IsStatic &&
                             !x.IsAbstract &&
                             x.Parameters.Count == 0 &&
                             x.Name.StartsWith("On") &&
                             x.Name.EndsWith("Changed"))
               .Select(methodDefinition =>
        {
            var typeDefinitions = new Stack <TypeDefinition>();
            typeDefinitions.Push(notifyNode.TypeDefinition);

            return methodGenerifier.GetMethodReference(typeDefinitions, methodDefinition);
        }));
    }