我有这个类,它有一个返回对象的方法:
public class Deserializer<T>
{
public static T FromJson(string json)
{
return new JavaScriptSerializer().Deserialize<T>(json);
}
}
我有一个类型。如何基于此类型创建 Deserializer 类的实例?以下显然不起作用:
var type = typeOf(MyObject);
var foo = Deserializer<type>.FromJson(json);
您也可以为在编译时不知道类型的消费者提供非泛型版本(顺便说一句,当您公开 API 时,这是一个很好的做法):
public class Deserializer
{
public static T FromJson<T>(string json)
{
return new JavaScriptSerializer().Deserialize<T>(json);
}
public static object FromJson(string json, Type type)
{
return new JavaScriptSerializer().Deserialize(json, type);
}
}
现在,在编译时知道类型的消费者:
Foo foo = Deserializer.FromJson<Foo>(json);
以及在编译时不知道类型的消费者:
Type type = ...
object instance = Deserializer.FromJson(json, type);
我是一名优秀的程序员,十分优秀!