C#中有什么东西与java.lang.Class类似吗?

时间:2014-06-30 08:20:02

标签: c# class runtime

例如,我想动态地告诉Jason转换器它应该反序列化的类型。在Java中,我可以使用java.lang.Class。 C#中是否有相同的概念?

1 个答案:

答案 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中,泛型作为第一类运行时特性存在 - 编译器不会通过类型擦除删除它们。