Список классов в сборке - PullRequest
       21

Список классов в сборке

5 голосов
/ 29 декабря 2008

У меня есть сборка DLL, в которой есть различные классы. Каждый класс имеет около 50-100 членов и 4-5 функций. Как я могу создать список всех классов и их соответствующих членов, используя программу VB.NET?

Мне нужно показать пользователю для выполнения операции с использованием определенного класса.

Ответы [ 5 ]

16 голосов
/ 29 декабря 2008

Предполагая, что ваша сборка загружена в thisAsm (в этом примере я использую исполняющую сборку),

Это даст вам все неабстрактные классы:

Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where(t => t.IsClass && !t.IsAbstract).ToList();

И это даст вам все классы, которые реализуют определенный интерфейс.

(Например, если вам нужно получить только те классы, которые реализуют IYourInterface, то)

Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where
            (t => ((typeof(IYourInterface).IsAssignableFrom(t) 
                 && t.IsClass && !t.IsAbstract))).ToList();

Как только вы получите этот список элементов, вы можете отобразить элементы каждого типа, вызвав GetProperties () и GetMethods () для каждого элемента списка типов.

2 голосов
/ 29 декабря 2008

См. Документацию для System.Reflection.Assembly.GetTypes () и System.Type.GetMembers ()

- larsw

1 голос
/ 04 октября 2014

Вы можете получить все типы, которые наследуются от Форма в VB.net:

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm.GetTypes().Where(Function(t) t.BaseType = GetType(Form)).ToList()
0 голосов
/ 04 октября 2014

Вот версия vb.net, основанная на ответе @amazedsaint:

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm
    .GetTypes()
    .Where(Function(t) t.IsClass AndAlso Not t.IsAbstract).ToList()

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm
    .GetTypes()
    .Where(Function(t) ((GetType(IYourInterface).IsAssignableFrom(t) AndAlso t.IsClass AndAlso Not t.IsAbstract))).ToList()
0 голосов
/ 29 декабря 2008

Многие примеры в Интернете. Вот один C # хотя).

...