2009-02-11 3 views

Répondre

18

GetExportedTypes() n'inclut pas les types protected/private/internal. Selon la question liée à la question d'Alexander ci-dessous, les types internes ne sont pas inclus, même s'ils seraient visibles à un assembly via InternalsVisibleToAttribute. GetTypes() inclut tous les types.

+0

Il est particulièrement déroutant que les types 'protected' imbriqués, et les types' internal protected 'imbriqués, dont les types de déclaration sont publics, ne soient pas retournés. Un exemple avec ['TypeConverter + SimplePropertyDescriptor'] (http://msdn.microsoft.com/en-us/library/system.componentmodel.typeconverter.simplepropertydescriptor.aspx):' class MyClass: System.ComponentModel.TypeConverter {static void Main() {var exporté = typeof (SimplePropertyDescriptor); Console.WriteLine (exported.IsVisible)/* écrit False * /; }} ' –

7

GetExportedTypes() renvoie uniquement les types visibles à l'extérieur de l'ensemble en question. "Visible" signifie les types publics et les types publics imbriqués dans d'autres types publics.

+0

alors vous voulez dire que tous les types publics sont retournés lorsque GetExportedTypes() est utilisé? Que fait alors GetTypes()? – Viks

3

Petite remarque sur InternalsVisibleToAttribute et this question.

Même si l'appel est effectué par un assembly avec un attribut InternalsVisibleTo, GetExportedTypes() ne renverra pas les types internal. Par conséquent, GetExportedTypes() renvoie uniquement les types public.