16 private static readonly
char[]
SPECIAL_CHARS =
new char[7] {
',',
'[',
']',
'&',
'*',
'+',
'\\' };
33 [RequiresUnreferencedCode(
"The type might be removed")]
34 internal static Type GetType(
string typeName, Func<AssemblyName, Assembly> assemblyResolver, Func<Assembly, string, bool, Type> typeResolver,
bool throwOnError,
bool ignoreCase, ref
StackCrawlMark stackMark)
40 if (typeName.Length > 0 && typeName[0] ==
'\0')
46 if (safeTypeNameParserHandle !=
null)
49 result = typeNameParser.ConstructType(assemblyResolver, typeResolver, throwOnError, ignoreCase, ref stackMark);
64 [RequiresUnreferencedCode(
"The type might be removed")]
65 private unsafe
Type ConstructType(Func<AssemblyName, Assembly> assemblyResolver, Func<Assembly, string, bool, Type> typeResolver,
bool throwOnError,
bool ignoreCase, ref
StackCrawlMark stackMark)
69 if (assemblyName.Length > 0)
71 assembly =
ResolveAssembly(assemblyName, assemblyResolver, throwOnError, ref stackMark);
86 Type type =
ResolveType(assembly, names, typeResolver, throwOnError, ignoreCase, ref stackMark);
93 if (typeArguments !=
null)
96 for (
int i = 0; i < typeArguments.Length; i++)
100 array[i] = typeNameParser.
ConstructType(assemblyResolver, typeResolver, throwOnError, ignoreCase, ref stackMark);
102 if (
array[i] ==
null)
109 fixed (
int*
value = modifiers)
119 if (assemblyResolver ==
null)
140 if (assembly ==
null && throwOnError)
148 [RequiresUnreferencedCode(
"The type might be removed")]
153 if (typeResolver ==
null)
159 type = typeResolver(assembly,
text, ignoreCase);
160 if (
type ==
null && throwOnError)
173 for (
int i = 1; i < names.Length; i++)
175 type =
type.GetNestedType(names[i], bindingFlags);
195 Span<char> initialBuffer = stackalloc
char[64];
197 foreach (
char c
in name)
201 valueStringBuilder.Append(
'\\');
203 valueStringBuilder.Append(c);
205 return valueStringBuilder.ToString();
int IList. IndexOf(object value)
virtual ? string FullName
virtual ? Type GetType(string name)
static RuntimeAssembly InternalLoad(string assemblyName, ref StackCrawlMark stackMark, AssemblyLoadContext assemblyLoadContext=null)
static RuntimeType GetType(string typeName, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark)
static ? AssemblyLoadContext CurrentContextualReflectionContext
static string Format_StringZeroLength
static string TypeLoad_ResolveTypeFromAssembly
static string TypeLoad_ResolveNestedType
static string Arg_TypeLoadNullStr
static string Format(string resourceFormat, object p1)
static string FileNotFound_ResolveAssembly
static string TypeLoad_ResolveType
static void _GetTypeArguments(SafeTypeNameParserHandle pTypeNameParser, ObjectHandleOnStack retArray)
static readonly char[] SPECIAL_CHARS
static void _CreateTypeNameParser(string typeName, ObjectHandleOnStack retHandle, bool throwOnError)
unsafe Type ConstructType(Func< AssemblyName, Assembly > assemblyResolver, Func< Assembly, string, bool, Type > typeResolver, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark)
static void _GetNames(SafeTypeNameParserHandle pTypeNameParser, ObjectHandleOnStack retArray)
TypeNameParser(SafeTypeNameParserHandle handle)
static string EscapeTypeName(string name)
static SafeTypeNameParserHandle CreateTypeNameParser(string typeName, bool throwOnError)
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()
readonly SafeTypeNameParserHandle m_NativeParser
static Type GetType(string typeName, Func< AssemblyName, Assembly > assemblyResolver, Func< Assembly, string, bool, Type > typeResolver, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark)
static void _GetAssemblyName(SafeTypeNameParserHandle pTypeNameParser, StringHandleOnStack retString)
static void _GetModifiers(SafeTypeNameParserHandle pTypeNameParser, ObjectHandleOnStack retArray)
static unsafe Type GetTypeHelper(Type typeStart, Type[] genericArgs, IntPtr pModifiers, int cModifiers)