c# - 如何从字符串表示中获取泛型类型?

标签 c# reflection types

我有 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/

相关文章:

c# - SqlException的构造函数在哪里?

.net - 字符串是值类型还是引用类型?

c# - 我将如何在 C# 中实现 Dictionary<int, string> 类型的队列和迭代/入队/出队

c# - GetInterfaces() 返回 FullName = null 的通用接口(interface)类型

sql - SQL Server中有4个字节的unsigned int?

c# - WCF wsHttpBindingwith silverlight 中的跨域错误

c# - 从 Winforms 月历中获取选定的月份?

c# - 如何将两个 LINQ 表达式中的 .Select 合并为一个?

php - 使用 Reflection 类将精确数量的参数传递给 PHP 类构造函数

c# - 构造函数调用返回 null : what to do?