例如,我想动态地告诉Jason转换器它应该反序列化的类型。在Java中,我可以使用java.lang.Class。 C#中是否有相同的概念?
答案 0 :(得分:0)
大多数序列化程序都有通用API或基于Type
的API;两者都适用于此。例如,json.net提供:
var foo = (Foo) JsonConvert.DeserializeObject(json, typeof(Foo));
和
var foo = JsonConvert.DeserializeObject<Foo>(json);
这是第一个与你所描述的最相似的;这里的关键是Type
:
Type type = typeof(Foo);
当然还有其他获取Type
实例的方法,包括按名称和通用构造:
Type itemType = someAssembly.GetType("My.Magic.Type");
Type listType = typeof(List<>).MakeGenericType(itemType);
会导致Type
代表List<My.Magic.Type>
。请注意,在.NET中,泛型作为第一类运行时特性存在 - 编译器不会通过类型擦除删除它们。