Ejemplo n.º 1
0
            public DmdTypeDef GetTypeDef(IDmdAssemblyName assemblyName, List <string> typeNames)
            {
                if (typeNames.Count == 0)
                {
                    return(null);
                }

                var targetAssembly = assembly;

                if (assemblyName != null && !AssemblyNameEqualityComparer.Instance.Equals(targetAssembly.GetName(), assemblyName))
                {
                    targetAssembly = (DmdAssemblyImpl)targetAssembly.AppDomain.GetAssembly(assemblyName);
                    if (targetAssembly == null)
                    {
                        return(null);
                    }
                }

                DmdTypeDef type;

                DmdTypeUtilities.SplitFullName(typeNames[0], out string @namespace, out string name);

                var module = targetAssembly.ManifestModule;

                if (module == null)
                {
                    return(null);
                }
                var typeRef = new DmdParsedTypeRef(module, null, DmdTypeScope.Invalid, @namespace, name, null);

                type = targetAssembly.GetType(typeRef, ignoreCase);

                if ((object)type == null)
                {
                    return(null);
                }
                for (int i = 1; i < typeNames.Count; i++)
                {
                    var flags = DmdBindingFlags.Public | DmdBindingFlags.NonPublic;
                    if (ignoreCase)
                    {
                        flags |= DmdBindingFlags.IgnoreCase;
                    }
                    type = (DmdTypeDef)type.GetNestedType(typeNames[i], flags);
                    if ((object)type == null)
                    {
                        return(null);
                    }
                }
                return(type);
            }
Ejemplo n.º 2
0
 DmdParsedTypeRef CreateTypeRefNoAssembly(string fullName, DmdParsedTypeRef?declaringTypeRef)
 {
     DmdTypeUtilities.SplitFullName(fullName, out var ns, out var name);
     return(new DmdParsedTypeRef(ownerModule !, declaringTypeRef, DmdTypeScope.Invalid, ns, name, null));
 }