Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ConstructType()

unsafe Type System.TypeNameParser.ConstructType ( Func< AssemblyName, Assembly > assemblyResolver,
Func< Assembly, string, bool, Type > typeResolver,
bool throwOnError,
bool ignoreCase,
ref StackCrawlMark stackMark )
inlineprivate

Definition at line 65 of file TypeNameParser.cs.

66 {
67 Assembly assembly = null;
68 string assemblyName = GetAssemblyName();
69 if (assemblyName.Length > 0)
70 {
71 assembly = ResolveAssembly(assemblyName, assemblyResolver, throwOnError, ref stackMark);
72 if (assembly == null)
73 {
74 return null;
75 }
76 }
77 string[] names = GetNames();
78 if (names == null)
79 {
80 if (throwOnError)
81 {
82 throw new TypeLoadException(SR.Arg_TypeLoadNullStr);
83 }
84 return null;
85 }
86 Type type = ResolveType(assembly, names, typeResolver, throwOnError, ignoreCase, ref stackMark);
87 if (type == null)
88 {
89 return null;
90 }
91 SafeTypeNameParserHandle[] typeArguments = GetTypeArguments();
92 Type[] array = null;
93 if (typeArguments != null)
94 {
95 array = new Type[typeArguments.Length];
96 for (int i = 0; i < typeArguments.Length; i++)
97 {
98 using (TypeNameParser typeNameParser = new TypeNameParser(typeArguments[i]))
99 {
100 array[i] = typeNameParser.ConstructType(assemblyResolver, typeResolver, throwOnError, ignoreCase, ref stackMark);
101 }
102 if (array[i] == null)
103 {
104 return null;
105 }
106 }
107 }
108 int[] modifiers = GetModifiers();
109 fixed (int* value = modifiers)
110 {
111 IntPtr pModifiers = new IntPtr(value);
112 return RuntimeTypeHandle.GetTypeHelper(type, array, pModifiers, (modifiers != null) ? modifiers.Length : 0);
113 }
114 }
TypeNameParser(SafeTypeNameParserHandle handle)
static Assembly ResolveAssembly(string asmName, Func< AssemblyName, Assembly > assemblyResolver, bool throwOnError, ref StackCrawlMark stackMark)
static Type ResolveType(Assembly assembly, string[] names, Func< Assembly, string, bool, Type > typeResolver, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark)
SafeTypeNameParserHandle[] GetTypeArguments()

References System.TypeNameParser.TypeNameParser(), System.SR.Arg_TypeLoadNullStr, System.array, System.TypeNameParser.ConstructType(), System.TypeNameParser.GetAssemblyName(), System.TypeNameParser.GetModifiers(), System.TypeNameParser.GetNames(), System.TypeNameParser.GetTypeArguments(), System.RuntimeTypeHandle.GetTypeHelper(), System.TypeNameParser.ResolveAssembly(), System.TypeNameParser.ResolveType(), System.type, and System.value.

Referenced by System.TypeNameParser.ConstructType().