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

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

Ответы [ 3 ]

3 голосов
/ 09 июля 2009
foreach(Type type in assembly.GetTypes()) {
  var isChild = type.IsSubclassOf(typeof(parentClass))
}

Ссылка от MSDN .

2 голосов
/ 09 июля 2009
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 для включения пространства имен.

1 голос
/ 09 июля 2009

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
        );
}
...