为什么System.Reflection命名空间中没有Type类?

时间:2010-03-19 14:36:13

标签: c# .net namespaces design-decisions

Type的所有内容都具有反思性。是因为Type的使用频率高于System.Reflection中其他类的使用频率吗?或者因为它的功能更像是系统类而不是反射类?

简而言之,我一直想知道System.Type位置背后的动机是什么。

3 个答案:

答案 0 :(得分:1)

程序集的类型和Assembly位于System.Reflection,这很奇怪。

所以我的猜测是,它与Object实现方法GetType有关,该方法返回Type

答案 1 :(得分:1)

Type类在更多地方使用,而不仅仅是System.Reflection。使用Reflector快速搜索可以看到数百个。它在System.Configuration,System.Data,System.Drawing,System.Linq,System.Windows.Forms等中至关重要。在这些类中实际使用Type实例的方式是不可见的。可能是使用了System.Reflection,但这是一个实际细节,绝不会影响程序。

鉴于创建这些类所需的Type实例对于typeof运算符和object.GetType来说是微不足道的,除非你实际编写反射代码,否则你永远不必使用System.Reflection,Type肯定值得系统中一个易于访问的位置命名空间。

答案 2 :(得分:0)

我想这是因为Object是一个GetType方法。

MS编码练习告诉一个类不应该引用子名称空间中的类型。在实践中,BCL经常违反这一规则; o)