Pergunta

Eu tenho uma DLL de montagem, em que existem várias classes. Cada classe tem em torno de 50-100 membros e 4-5 funções. Como posso criar uma lista de todas as classes e seus respectivos membros usando um programa VB.NET?

Eu preciso mostrar ao usuário para executar uma operação usando uma classe particular.

Foi útil?

Outras dicas

Assumindo que você tenha o seu assembly carregado para thisAsm (neste ex Eu estou usando a execução de montagem),

Isso vai te dar todas as classes não abstratas:

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

E isso vai te todas as classes que implementa uma interface específica.

(Ex. Se você precisa obter apenas as classes que implementa IYourInterface, então)

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

Uma vez que você tem esta lista de itens, você pode mostrar os membros de cada tipo, chamando os GetProperties () e GetMethods () em cada membro da lista de tipos.

Você pode obter todo o tipo que herda de Formulário em VB.net:

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

Aqui é a versão vb.net com base na resposta @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()

Muitos exemplos estão na web. Aqui está um (em C # embora).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top