public GetMethodReference ( Stack |
||
typeDefinitions | Stack |
|
methodDefinition | MethodDefinition | |
return |
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), }); }
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); })); }