C#如何使用字符串声明类型

时间:2015-03-28 21:35:21

标签: c# types

可以使用字符串在C#中声明类型吗?

而不是:

MyType foo = bar;

你会有一个“MyType”字符串。

string typeString  = "MyType";
TypeOftypeString foo = bar;

显然我不知道这样做的正确方法。所以上面的例子只是传达我的想法的一种方式。

在Unity3D中,我可以在运行时将字符串设置为特定值。我可以使用该字符串来定义类型吗?即使这最终成为我的代码中不合逻辑的追求,这可能吗?如果是这样,你怎么去呢?

编辑:扩大我说的话。 MyType是应用程序中的一个类。我也有MyOtherType和MyDifferantType。我希望能够将该字符串设置为“MyType”或“MyOtherType”,然后将该对象的已创建实例分配给该字段。我试图避免一个非常长的if-else链或switch()语句,其中我为对象可能遇到的每种类型创建一个案例,即使在运行时之前设置字符串时预先确定了该类型。

如果这看起来像个傻瓜差事,请告诉我。

2 个答案:

答案 0 :(得分:2)

这应该是一个解决方案:

var yourType= "yourType";
var theType = TheType.GetType(yourType, true);
var variable = (yourTypeCast)Activator.CreateInstance(yourType);

答案 1 :(得分:1)

如果我理解正确,您希望基于字符串中的名称实例化一个类。这是一种方法。

var typeName = "someType";
var type = Type.GetType(typeName, true);
var instanceOfType = (someInterfaceCast)Activator.CreateInstance(type); //I like to use an interface cast here

更新:就像上面提到的一些评论一样,如果你能避免这条路,最好这样做。