将类型传递给方法(不带泛型)(C#语法)
本文关键字:泛型 类型 语法 方法 | 更新日期: 2023-09-27 18:01:01
我一直在寻找一种在构建数据库管理器时创建临时变量的方法。
public void Read(string name, string info, Type type){
// blah temp = "Create temporary variable of type above"
database.retrieve(name, info, out temp);
Debug.Log (temp.ToString());
}
我尝试传递泛型,但JSON不喜欢使用泛型的方法。我觉得我快要用typeof
弄清楚了,但我似乎找不到语法。
编辑:临时变量包含一个重写的ToString()
,所以我不能简单地将out
转换为和Object
。
如果database.retrieve
是一个通用方法,最好的选择是使该方法本身通用:
public void Read<T>(string name, string info)
{
T temp;
database.retrieve(name, info, out temp);
// ...
}
由于它是一个out
参数,所以实际上不需要实例化一个临时的。如果它是非泛型的,并且采用object
,那么只需使用对象:
public void Read(string name, string info, Type type)
{
object temp;
database.retrieve(name, info, out temp);
// ...
}
您可以尝试这样的方法。但本例假设您的类型具有无参数构造函数。如果您使用.NET<4.0将CCD_ 8更改为CCD_。
public void Read(string name, string info, Type type)
{
ConstructorInfo ctor = type.GetConstructor(System.Type.EmptyTypes);
if (ctor != null)
{
dynamic temp = ctor.Invoke(null);
database.retrieve(name, info, out temp);
Debug.Log(temp.ToString());
}
}