使用类型定义新变量

本文关键字:变量 新变量 类型 定义 | 更新日期: 2023-09-27 18:20:16

我想知道是否可以使用Type将obect转换回其原始类型。我现在有这样的代码,但这不起作用。我在网上看过,但我得到的是具有泛型类型的方法,比如这样。

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?
}

如果这不起作用,有什么好方法可以得到同样的结果?

提前感谢您的回复。

使用类型定义新变量

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

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

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