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

C# How to use a string to declare a type

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

而不是:

MyType foo = bar;

你会得到一串 "MyType".

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

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

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

编辑:扩展我所说的内容。 MyType 是应用程序中的 class。我还有 MyOtherType 和 MyDifferantType。我希望能够使该字符串成为 "MyType" 或 "MyOtherType",然后将该对象的已创建实例分配给该字段。我试图避免使用非常长的 if-else 链或 switch() 语句,在这种情况下,我会为对象可能遇到的每种类型提供一个案例,即使该类型是在运行前设置字符串时预先确定的。

如果这看起来像是傻事,请告诉我。

如果我没理解错的话,您想根据字符串中的名称实例化一个 class。这是执行此操作的一种方法。

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

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

这应该是一个解决方案:

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