我一直在寻找一种在构建数据库管理器时创建临时变量的方法。
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());
}
我尝试传递Generics,但JSON不喜欢Generics的方法。我觉得我很快就用typeof
搞清楚了,但我似乎无法找到语法。
编辑:临时变量包含覆盖ToString()
,因此我不能简单地out
和Object
。
答案 0 :(得分:3)
如果database.retrieve
是通用方法,那么最好的方法是使方法本身通用:
public void Read<T>(string name, string info)
{
T temp;
database.retrieve(name, info, out temp);
// ...
}
由于它是out
参数,因此您实际上并不需要实例化临时参数。如果它是非泛型的,并且需要object
,则只需使用object:
public void Read(string name, string info, Type type)
{
object temp;
database.retrieve(name, info, out temp);
// ...
}
答案 1 :(得分:0)
你可以尝试这样的事情。但是这个例子假设你的类型有无参数构造函数。如果您使用.NET&lt; 4.0将dynamic
更改为Object
。
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());
}
}