2009-07-09 2 views

ответ

2
Assembly assembly = typeof(DataSet).Assembly; // etc 
foreach (Type type in assembly.GetTypes()) 
{ 
    if (type.BaseType == null) 
    { 
     Console.WriteLine(type.Name); 
    } 
    else 
    { 
     Console.WriteLine(type.Name + " : " + type.BaseType.Name); 
    } 
} 

Обратите внимание, что дженерики и вложенные типы имеют забавные имена, любые вы можете захотеть использовать FullName включать пространство имен.

+0

Nope. Не домашнее задание. Опрос моих 201 вопросов - не студент. Просто ваш средний перегруженный/недоплаченный кодер. – BuddyJoe

1

Assembly.GetTypes и Type.BaseType:

Assembly a; 
foreach(var type in a.GetTypes()) { 
    Console.WriteLine(
     String.Format("{0} : {1}", 
      type.Name, 
      type.BaseType == null ? String.Empty : type.BaseType.Name 
     ); 
} 
+0

Остерегайтесь; интерфейсы могут не иметь BaseType; ни "объект" –

+0

@Marc: Хороший улов. – jason

3
foreach(Type type in assembly.GetTypes()) { 
    var isChild = type.IsSubclassOf(typeof(parentClass)) 
} 

Справка с MSDN.

+0

+1 - прохладно Дополнительная информация. не будет тестировать отношения подкласса/суперкласса в моем текущем приложении, но спасибо. – BuddyJoe

+0

О, я неправильно прочитал ваш вопрос. Рад, что это помогло. –

Смежные вопросы