【发布时间】:2015-03-28 21:35:21
【问题描述】:
C#中可以用字符串声明类型吗?
代替:
MyType foo = bar;
你会有一个字符串“MyType”。
string typeString = "MyType";
TypeOftypeString foo = bar;
显然我不知道这样做的正确方法。所以上面的例子只是表达我的想法的一种方式。
在 Unity3D 中,我可以在运行前将字符串设置为特定值。我可以使用该字符串来定义类型吗?即使这最终成为我的代码中不合逻辑的追求,这可能吗?如果是这样,你会怎么做?
编辑:扩展我所说的内容。 MyType 是应用程序中的一个类。我也有 MyOtherType 和 MyDifferantType。我希望能够将该字符串设置为“MyType”或“MyOtherType”,然后将该对象的已创建实例分配给该字段。我试图避免一个非常长的 if-else 链或 switch() 语句,其中我为对象可能遇到的每种类型都做了一个案例,即使该类型是在运行时之前设置字符串时预先确定的。
如果这似乎是一件愚蠢的事情,请告诉我。
【问题讨论】:
-
TypeOftypeString 永远是字符串,你的意思是 typeString 的值吗?
-
你可以使用
Activator.CreateInstance。 -
TypeOftypeString 是我试图传达的一个例子。这不是一个功能示例。 “MyType”已在应用程序中创建,我只想在运行时根据我的字符串动态创建或分配该类型的新字段。
-
@douglasg14b:傻瓜的冒险。您只需要为您的类型提供一个通用接口,那么唯一需要开关或等效的地方就是您创建实例的地方。
-
明白了,感谢您的反馈。我一定是对这个问题有洞见,完全忘记了我对接口的使用。如何关闭主题而不删除它?