Pregunta

Tengo un conjunto de DLL, en el que hay varias clases. Cada clase tiene alrededor de 50-100 miembros y 4-5 funciones. ¿Cómo puedo crear una lista de todas las clases y sus respectivos miembros utilizando un programa VB.NET?

I que mostrar al usuario para realizar una operación usando una clase particular.

¿Fue útil?

Solución

Otros consejos

Si se asume que usted ha cargado su ensamblaje a thisAsm (en este ex estoy usando el conjunto de la ejecución),

Esto le dará todas las clases no abstractas:

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

Y esto le dará todas las clases que implementan una interfaz específica.

(Ej. Si usted necesita para obtener sólo las clases que implementan IYourInterface, a continuación)

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

Una vez que haya esta lista de elementos, puede mostrar los miembros de cada tipo, llamando a los GetProperties () y getMethods () en cada miembro de la lista de tipos.

Usted puede obtener todo tipo que hereda de Formulario en VB.net:

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

He aquí la versión vb.net basan en respuesta @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()

Hay muchos ejemplos en la web. Aquí es uno (en C # sin embargo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top