使用Type定义新变量

时间:2013-06-28 21:48:22

标签: c#

我想知道是否可以使用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?
}

如果这不起作用,那么获得相同结果的好方法是什么?

提前感谢您的回复。

2 个答案:

答案 0 :(得分:3)

如果您要将命名对象作为dynamic返回,则不需要该类型。只需返回它,运行时绑定将为您处理(或在运行时引发异常)。

public static dynamic GetObject(string name)
{
   return objects[name];
}

答案 1 :(得分:0)

您可以使用Reflection创建带有特定Type作为类型参数的绑定通用Type。完成后,您可以使用Activator.CreateInstance创建该类型的实例。您创建的泛型类型可以基于一个纯粹为此目的定义的开放泛型类,因为它可以对它想要的类型T执行任何操作。请注意,如果T对其有约束,如果尝试的类型参数不满足这些约束,则尝试创建泛型类型将失败。