【发布时间】:2014-03-20 23:16:31
【问题描述】:
我了解 C# 是一种静态类型语言,并且我已经阅读了此 SO 帖子的答案: initialize a class by string variable in c#?
不过,我的问题有点不同。我正在使用一个 T4 模板,该模板为我提供了一个类的名称作为字符串参数。我会在这里给出模板代码,但重要的是类型是字符串,所以它与在任何 C# 模块中使用此语句相同:
string s = "MyNamespace.Customer.Model";
使用该字符串,我需要将类型转换为类型变量。通常,当我可以访问实际类型时,我会使用此代码:
Type typeModel = typeof(MyNamespace.Customer.Model);
如果给定一个字符串,我将如何获得类型?换句话说,我的代码理想情况下看起来像这样(我知道这不起作用,因为“s”是一个字符串):
Type typeModel = typeof(s);
(顺便说一句,我确实知道该类型在哪个程序集中,因此我可以使用该信息;此外,模板引用了包含相关类型的程序集,这值得...)
注意:我不想创建 Type 的对象实例,因此请不要建议需要使用 Activator.CreateInstance 的解决方案,除非这是唯一的解决方案...
感谢您提供的任何想法。
【问题讨论】:
-
是否预先知道可能的类型范围?
-
不,很遗憾。这是将进入 Microsoft 提供的 MVC 脚手架模板之一的代码。这个想法是你可以在你的项目中搭建任何模型——所以,不,我不知道可以呈现哪些模型类型。
标签: reflection gettype