Pregunta

Estoy tratando de crear una instancia de un conjunto de datos de tipo dinámico en mi código en tiempo de ejecución. Tengo el tipo disponible para mí, pero cuando trato de hacer esto:

object obj = Activator.CreateInstance(Type.GetType("TYPED DATASET TYPE HERE"));

El problema es no parece el tipo de ser válido de acuerdo con el código cuando intento ejecutarlo. ¿Qué podría estar haciendo mal aquí?

¿Fue útil?

Solución

Cuando se define el tipo? (Que el montaje).

A menos que se le da un nombre calificado de montaje, será solo se ve en el llamando montaje, y algunos otros ensambles. Opciones:

  • utilizar un nombre calificado de montaje ( "somen.amespace.sometype, someassembly, ...")
  • obtener la instancia Assembly (de un tipo conocido en que el montaje), y utilizar GetType(fullyQualifiedName) en la instancia Assembly

Otros consejos

Suponiendo que está emitiendo el código correcto conjunto de datos también puede ser necesario para cargar el ensamblado.

Mira en la siguiente Reflection.Emit espacios de nombres de .NET, y la reflexión.

También podría mirar a los proyectos de código abierto, como Windsor, que utilizan la reflexión para emitir nuevas clases para crear interceptores. Puede haber código de allí que se puede aprender de.

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