bool?CanAccess(TypeDef td, GenericInstSig git, MemberRef mr) { if (mr == null || td == null) { return(null); } if (mr.MethodSig != null) { var md = td.FindMethodCheckBaseType(mr.Name, mr.MethodSig); if (md == null) { // Assume that it's an array type if it's one of these methods if (mr.Name == "Get" || mr.Name == "Set" || mr.Name == "Address" || mr.Name == ".ctor") { return(true); } return(null); } return(CanAccess(md, git)); } if (mr.FieldSig != null) { return(CanAccess(td.FindFieldCheckBaseType(mr.Name, mr.FieldSig), git)); } return(null); }
bool? CanAccess(TypeDef td, GenericInstSig git, MemberRef mr) { if (mr == null || td == null) return null; if (mr.MethodSig != null) { var md = td.FindMethodCheckBaseType(mr.Name, mr.MethodSig); if (md == null) { // Assume that it's an array type if it's one of these methods if (mr.Name == "Get" || mr.Name == "Set" || mr.Name == "Address" || mr.Name == ".ctor") return true; return null; } return CanAccess(md, git); } if (mr.FieldSig != null) return CanAccess(td.FindFieldCheckBaseType(mr.Name, mr.FieldSig), git); return null; }
public static FieldDef GetDefinition(this TypeDef type, FieldSignature field) => type.FindFieldCheckBaseType(field.Name, type.Module.ToSig(field), ComparerOptions);