繁体   English   中英

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

[英]C# How to use a string to declare a type

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

代替:

MyType foo = bar;

您将有一个字符串“ MyType”。

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

显然,我不知道执行此操作的正确方法。 因此,以上示例只是表达我所想的一种方式。

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

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

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

这应该是一个解决方案:

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

如果我理解正确,则想基于字符串中的名称实例化一个类。 这是执行此操作的一种方法。

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

更新:像提到的一些评论一样,如果您可以避免使用此路径,则最好这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM