예제 #1
0
        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);
        }
예제 #2
0
		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;
		}
예제 #3
0
 public static FieldDef GetDefinition(this TypeDef type, FieldSignature field) => type.FindFieldCheckBaseType(field.Name, type.Module.ToSig(field), ComparerOptions);