protected IMethod ResolveDeclaringMethod(IMethodSignature methodSig, IModule context, ICodeNode genericContext, bool polymorphic) { var ownerType = ResolveType(methodSig.Owner, context, genericContext); if (ownerType == null) { return(null); } var comparer = new ResolveSignatureComparer(context, ownerType.Module); // Find foreach (var method in ownerType.Methods) { if (comparer.Equals(methodSig, method.DeclaringMethod)) { return(method); } } // Find polymorphic if (polymorphic) { ownerType = ownerType.BaseType; while (ownerType != null) { foreach (var method in ownerType.Methods) { if (comparer.Equals(methodSig, method, method)) { return(method); } } ownerType = ownerType.BaseType; } } return(null); }
protected IProperty ResolveProperty(IPropertySignature propertySig, IModule context, ICodeNode genericContext) { var ownerType = ResolveType(propertySig.Owner, context, genericContext); if (ownerType == null) { return(null); } var comparer = new ResolveSignatureComparer(context, ownerType.Module); // Find foreach (var property in ownerType.Properties) { if (comparer.Equals(propertySig, property.DeclaringProperty)) { return(property); } } return(null); }
protected IField ResolveField(IFieldSignature fieldSig, IModule context, ICodeNode genericContext) { var ownerType = ResolveType(fieldSig.Owner, context, genericContext); if (ownerType == null) { return(null); } var comparer = new ResolveSignatureComparer(context, ownerType.Module); // Find foreach (var field in ownerType.Fields) { if (comparer.Equals(fieldSig, field.DeclaringField)) { return(field); } } return(null); }
protected IEvent ResolveEvent(IEventSignature eventSig, IModule context, ICodeNode genericContext) { var ownerType = ResolveType(eventSig.Owner, context, genericContext); if (ownerType == null) { return(null); } var comparer = new ResolveSignatureComparer(context, ownerType.Module); // Find foreach (var e in ownerType.Events) { if (comparer.Equals(eventSig, e.DeclaringEvent)) { return(e); } } return(null); }