/ / Dlaczego klasa Type nie znajduje się w przestrzeni nazw System.Reflection? - c #, .net, projektowanie, przestrzenie nazw, decyzje projektowe

Dlaczego klasa Type nie znajduje się w przestrzeni nazw System.Reflection? - c #, .net, design, przestrzenie nazw, decyzje projektowe

Wszystko o Type ma charakter refleksyjny. Czy to dlatego, że Type jest używany częściej niż reszta klas w System.Reflection? A może dlatego, że działa bardziej jak klasa systemowa niż klasa odbicia?

Krótko mówiąc, zawsze zastanawiałem się, jaka jest motywacja lokalizacji System.Type było.

Odpowiedzi:

1 dla odpowiedzi № 1

Klasa Type jest używana w znacznie większej liczbie miejsc, a nietylko System.Reflection. Szybkie wyszukiwanie za pomocą Odbłyśnika ujawnia ich setki. Ma to kluczowe znaczenie w System.Configuration, System.Data, System.Drawing, System.Linq, System.Windows.Forms itp. Sposób, w jaki instancja Type jest faktycznie używana w tych klasach, nie jest widoczny. Prawdopodobnie system. Używane jest odbicie, ale jest to szczegół implementacji, który w żaden sposób nie wpływa na program.

Biorąc pod uwagę, że tworzenie instancji Type, że oneklasy potrzeba jest trywialna w przypadku operatora typeof i obiektu.GetType i że nigdy nie musisz używać System.Reflection, dopóki nie napiszesz kodu odbicia, Type z pewnością zasługuje na łatwo dostępną lokalizację w przestrzeni nazw System.


1 dla odpowiedzi nr 2

Zespół ma typy i Assembly leży na System.Reflection co jest ciekawe.

Domyślam się, że ma to coś wspólnego Object wdrożenie metody GetType która zwraca a Type.


0 dla odpowiedzi № 3

Chyba dlatego, że Object jako metoda GetType.

Ćwiczenie kodowania MS mówi, że klasa nie powinna odwoływać się do typu w przestrzeni nazw. W praktyce BCL dość często narusza tę zasadę; o)