/// <summary> /// Checks whether the type matches an expected type /// </summary> /// <param name="module">Module</param> /// <param name="name">Type name</param> /// <param name="expectedType">Expected type</param> /// <returns></returns> public static bool CheckType(ModuleDef?module, string name, TypeRef expectedType) { if (module is null) { module = new ModuleDefUser(); } var tr = TypeNameParser.ParseReflection(module, name, null); if (tr is null) { return(false); } var flags = AssemblyNameComparerFlags.All & ~AssemblyNameComparerFlags.Version; if (!new AssemblyNameComparer(flags).Equals(tr.DefinitionAssembly, expectedType.DefinitionAssembly)) { return(false); } if (!new SigComparer().Equals(tr, expectedType)) { return(false); } return(true); }
private string GetRealTypeFullName(string fullName) { var tr = TypeNameParser.ParseReflection(module, fullName, null); if (tr == null) { return(fullName); } var asmRef = tr.DefinitionAssembly; if (asmRef == null) { return(fullName); } var newFullName = fullName; string assemblyName = GetRealAssemblyName(asmRef); if (!string.IsNullOrEmpty(assemblyName)) { newFullName = string.Format("{0}, {1}", tr.ReflectionFullName, assemblyName); } return(newFullName); }
string GetRealTypeFullName(string fullName) { var tr = TypeNameParser.ParseReflection(module, fullName, null); if (tr is null) { return(fullName); } var asmRef = tr.DefinitionAssembly; if (asmRef is null) { return(fullName); } var newFullName = fullName; string assemblyName = GetRealAssemblyName(asmRef); if (!string.IsNullOrEmpty(assemblyName)) { newFullName = $"{tr.ReflectionFullName}, {assemblyName}"; } return(newFullName); }
public override Type BindToType(string assemblyName, string typeName) { var otherType = TypeNameParser.ParseReflection(module, $"{typeName}, {assemblyName}", null); if (string.IsNullOrEmpty(type.TypeName) || string.IsNullOrEmpty(otherType.TypeName)) { return(typeof(DontDeserializeType)); } if (!new SigComparer().Equals(type, otherType)) { return(typeof(DontDeserializeType)); } var flags = AssemblyNameComparerFlags.All & ~AssemblyNameComparerFlags.Version; if (!new AssemblyNameComparer(flags).Equals(type.DefinitionAssembly, otherType.DefinitionAssembly)) { return(typeof(DontDeserializeType)); } return(typeof(DeserializedType)); }
public MyBinder(string asmName, string typeName) { module = new ModuleDefUser(); type = TypeNameParser.ParseReflection(module, $"{typeName}, {asmName}", null); }
public MyBinder(string asmName, string typeName) { this.module = new ModuleDefUser(); this.type = TypeNameParser.ParseReflection(module, string.Format("{0}, {1}", typeName, asmName), null); }
ITypeDefOrRef GetTypeRef() => TypeNameParser.ParseReflection(ownerModule, typeFullName, null);
ITypeDefOrRef GetTypeRef() { return(TypeNameParser.ParseReflection(ownerModule, typeFullName, null)); }