.NET / C # - Справка по отражению - Классы в сборке

2

Каков наилучший способ прокрутки сборки, и для каждого класса в списке сборки это "SuperClass"?

Теги:
reflection
superclass
assemblies

3 ответа

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
    Нет. Не домашнее задание. Изучите мои 201 вопрос - не студент. Просто ваш средний переутомленный / недоплатный кодер.
3
foreach(Type type in assembly.GetTypes()) {
  var isChild = type.IsSubclassOf(typeof(parentClass))
}

Ссылка из MSDN.

  • 0
    +1 - классная дополнительная информация. не буду проверять отношения подкласса / суперкласса в моем текущем приложении, но спасибо.
  • 0
    О, я неправильно прочитал ваш вопрос. Рад, что это помогло.
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: Хороший улов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню