我想知道是否可以使用Type
将对象转换回原始类型。
我现在有这样的代码,但这不起作用。我看过互联网,但我得到的是泛型类型的方法,比如这个。
public static T method<T>(string name)
{
return (T)objects[name];
}
但我正在寻找类似的东西。
public static dynamic GetObject(string name)
{
Type t = objects[name].GetType();
t test = (t)objects[name]; <--- Is it possible to do something like this?
}
如果这不起作用,那么获得相同结果的好方法是什么?
提前感谢您的回复。
答案 0 :(得分:3)
如果您要将命名对象作为dynamic
返回,则不需要该类型。只需返回它,运行时绑定将为您处理(或在运行时引发异常)。
public static dynamic GetObject(string name)
{
return objects[name];
}
答案 1 :(得分:0)
您可以使用Reflection创建带有特定Type
作为类型参数的绑定通用Type
。完成后,您可以使用Activator.CreateInstance
创建该类型的实例。您创建的泛型类型可以基于一个纯粹为此目的定义的开放泛型类,因为它可以对它想要的类型T
执行任何操作。请注意,如果T
对其有约束,如果尝试的类型参数不满足这些约束,则尝试创建泛型类型将失败。