Esempio n. 1
0
        /// <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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
            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));
            }
Esempio n. 5
0
 public MyBinder(string asmName, string typeName)
 {
     module = new ModuleDefUser();
     type   = TypeNameParser.ParseReflection(module, $"{typeName}, {asmName}", null);
 }
Esempio n. 6
0
 public MyBinder(string asmName, string typeName)
 {
     this.module = new ModuleDefUser();
     this.type   = TypeNameParser.ParseReflection(module, string.Format("{0}, {1}", typeName, asmName), null);
 }
Esempio n. 7
0
 ITypeDefOrRef GetTypeRef() => TypeNameParser.ParseReflection(ownerModule, typeFullName, null);
Esempio n. 8
0
 ITypeDefOrRef GetTypeRef()
 {
     return(TypeNameParser.ParseReflection(ownerModule, typeFullName, null));
 }