Pregunta

Usando la reflexión, necesito investigar una DLL de usuario y crear un objeto de una clase en ella.

¿Cuál es la forma sencilla de hacerlo?

¿Fue útil?

Solución

Otros consejos

System.Reflection.Assembly es la clase que querrás usar.Contiene muchos métodos para iterar sobre los tipos contenidos en una DLL de usuario.Puede iterar a través de cada clase, tal vez ver si hereda de una interfaz en particular, etc.

http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx

Investigar Assembly.GetTypes() método para obtener la lista de tipos, o Assembly.GetExportedTypes() sólo para los públicos.

Puede crear una instancia de una clase a partir de un objeto Type usando Activator.CreateInstance, para obtener todos los tipos en un dll puede usar Assembly.GetTypes

Echa un vistazo a estos enlaces:

http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm

http://msdn.microsoft.com/en-us/library/k3a58006.aspx

Básicamente, usas la reflexión para cargar un ensamblaje y luego buscas el tipo que te interesa.Una vez que tenga el tipo, puede solicitar encontrar sus constructores u otros métodos/propiedades.Una vez que tengas el constructor, puedes invocarlo.¡Fácil!

Como ya se ha dicho, es necesario pinchar en el espacio de nombres System.Reflection.

Si conoce de antemano la ubicación/nombre de la DLL que desea cargar, debe iterar a través de Assembly.GetTypes().

En pseudocódigo se vería así:

Crear y ensamblar objeto.

Itere a través de todos los tipos contenidos en el ensamblaje.

Una vez que encuentres el que buscas, invocalo (CreateInstance)…

Úsalo con sabiduría.

;)

Tengo mucho código de Reflection si quieres echar un vistazo, pero la tarea es realmente simple y hay al menos una docena de artículos con ejemplos disponibles.(También conocido como Google).A pesar de eso, MSDN es su amigo para Reflection Reference.

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