public virtual FieldDefinition ResolveField(FieldReference fieldRef) { var declaringType = ResolveType(fieldRef.DeclaringType); if (declaringType.HasFields) { foreach (var field in declaringType.Fields) { if (FieldRefsAreEqual(field, fieldRef)) { return field; } } } return null; }
protected virtual bool FieldRefsAreEqual(FieldReference reference1, FieldReference reference2) { if (reference1 == null || reference2 == null) return false; if (reference1.Name != reference2.Name) return false; if (!TypeRefsAreEqual(reference1.DeclaringType, reference2.DeclaringType)) return false; if (reference1.Signature == null || reference2.Signature != null) return false; return TypeRefsAreEqual(reference1.Signature.ReturnType, reference2.Signature.ReturnType); }