2

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

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

提前感谢您的回复。

4

2 回答 2

3

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

public static dynamic GetObject(string name)
{
   return objects[name];
}
于 2013-06-28T21:49:56.527 回答
0

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

于 2013-06-28T22:03:56.730 回答