Почему класс Type не находится в пространстве имен System.Reflection? - PullRequest
5 голосов
/ 19 марта 2010

Все о Type является отражающим по своей природе. Это потому, что Type используется чаще, чем остальные классы в System.Reflection? Или потому что он функционирует больше как системный класс, чем класс отражения?

Короче говоря, мне всегда было интересно, какова была мотивация расположения System.Type.

Ответы [ 3 ]

1 голос
/ 19 марта 2010

Класс Type используется в гораздо большем количестве мест, а не только в System.Reflection. Быстрый поиск с помощью Reflector выявляет сотни из них. Это важно в System.Configuration, System.Data, System.Drawing, System.Linq, System.Windows.Forms и т. Д. Способ, которым экземпляр класса фактически используется в этих классах, не виден. Вполне вероятно, что System.Reflection используется, но это деталь реализации, которая никак не влияет на программу.

Учитывая, что создание экземпляра Type, в котором нуждаются эти классы, тривиально с оператором typeof и object.GetType и что вам никогда не придется использовать System.Reflection, если вы на самом деле не пишете код отражения, Type, безусловно, заслуживает легкодоступного расположения в системе Пространство имен.

1 голос
/ 19 марта 2010

Сборка имеет типы, а Assembly лежит на System.Reflection, что любопытно.

Так что я думаю, что это как-то связано с Object, реализующим метод GetType, который возвращает Type.

0 голосов
/ 19 марта 2010

Полагаю, это потому, что Object как метод GetType.

Практика кодирования MS говорит, что класс не должен ссылаться на тип в подпространстве имен. На практике BCL довольно часто нарушает это правило; o)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...