Вопрос

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

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

Это было полезно?

Другие советы

Предполагая, что вы загрузили свою сборку в 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() для каждого элемента списка типов.

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

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm.GetTypes().Where(Function(t) t.BaseType = GetType(Form)).ToList()

Вот 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()

Множество примеров есть в Интернете.Вот одинC# хотя).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top