这个问题看起来与之前提出过的问题类似,但请耐心等待。
基本上,我想在运行时使用除了表示变量所需类型的字符串之外的任何变量来实例化变量。几乎每个现有问题都给了我这样的东西:
Type type = Type.GetType(stringrepresentingType);
var newObject = Activator.CreateInstance(type);
这是有效的,但就目前而言,newObject
是object
类型。我希望能够将Activator创建的对象转换为type
中存储的类型,所以它看起来像这样:
Type type = Type.GetType(stringRepresentingType);
var newObject = (type)Activator.CreateInstance(type);
由于type
是变量,因此会引发错误。我还在Activator之前尝试了typeof(type)
和(Type.GetType(stringRepresentingType)
,但都没有工作。
如何在不使用if / else?
的情况下转换newObject
变量
编辑:
我将在逻辑比较中使用newObject
(例如==或||),因此我不能将其保留为类型object
。我知道我可以在事后使用if / else检查类型,但我很好奇是否有更优雅的解决方案。我使用dynamic
而不是var
,但遗憾的是Unity3D不支持它。