我有 MyClass<T>
.
然后我有这个 string s = "MyClass<AnotherClass>";
.如何从字符串 s
中获取类型?
一种方法(丑陋的)是解析出“<”和“>”并执行:
Type acType = Type.GetType("AnotherClass");
Type whatIwant = typeof (MyClass<>).MakeGenericType(acType);
但是有没有更简洁的方法来获得最终类型而无需任何解析等?
最佳答案
format for generics是名称,一个 ` 字符,类型参数的数量,后跟括号中以逗号分隔的类型列表:
Type.GetType("System.Collections.Generic.IEnumerable`1[System.String]");
我不确定是否有一种简单的方法可以将泛型的 C# 语法转换为 CLR 需要的字符串类型。我开始编写一个快速正则表达式来像您在问题中提到的那样解析它,但我意识到除非您放弃将嵌套泛型作为类型参数的能力,否则解析将变得非常复杂。
关于c# - 如何从字符串表示中获取泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/721870/