Ejemplo Dynamic Type Resolution Technology
Actualización: noviembre 2007
Este ejemplo muestra cómo los hosts pueden participar en el proceso de resolución de tipos mediante el suministro de un controlador de eventos que devuelve un ensamblado que contiene el tipo solicitado. Ésta es una técnica avanzada que se utiliza fundamentalmente en aplicaciones distribuidas para facilitar la flexibilidad y la tolerancia a errores.
Para obtener información sobre el uso de los ejemplos, consulte los temas siguientes:
Para generar el ejemplo desde el símbolo del sistema
Abra una ventana del símbolo del sistema y navegue hasta el subdirectorio específico de uno de los lenguajes para tener acceso al ejemplo.
Escriba msbuild DynamicTypeResolveCS.sln o msbuild DynamicTypeResolveVB.sln, dependiendo del lenguaje de programación elegido, en la línea de comandos.
Para generar el ejemplo mediante Visual Studio
Abra el Explorador de Windows y navegue hasta el subdirectorio específico de uno de los lenguajes para tener acceso al ejemplo.
Haga doble clic en el icono de DynamicTypeResolveCS.sln o DynamicTypeResolveVB.sln, dependiendo del lenguaje de programación elegido, para abrir el archivo en Visual Studio.
En el menú Generar, haga clic en Generar solución.
Para ejecutar el ejemplo
Abra la ventana del símbolo del sistema y navegue hasta el directorio que contiene el archivo ejecutable generado.
Escriba DynamicTypeResolve.exe en la línea de comandos.
Nota: |
---|
Este ejemplo genera una aplicación de consola. Para poder ver el resultado, debe iniciarla y ejecutarla en una ventana del símbolo del sistema. |
Comentarios
El ejemplo intenta crear instancias de un tipo no existente. No obstante, el ejemplo también controla los errores en la carga de tipos y crea dinámicamente el tipo necesario, evitando la excepción FileNotFoundException.
El ejemplo utiliza las tecnologías y las clases siguientes:
Reflexión
AppDomain El evento AssemblyResolve de esta clase se utiliza para agregar un controlador de eventos al que se llama cuando se produce un error en la carga de tipos.
Activator Se emplea para crear instancias de un tipo cuyo nombre no se conoce necesariamente en tiempo de compilación.
MethodInfo Se utiliza para invocar un método en un tipo, donde no se conoce necesariamente el nombre del método en tiempo de compilación.
AssemblyBuilder Se utiliza para emitir un ensamblado dinámico en tiempo de ejecución.
AssemblyName Se utiliza para definir la identidad única de un ensamblado. El ejemplo hace el uso más sencillo de este tipo, dar un nombre de texto al ensamblado dinámico.
ModuleBuilder Se utiliza para generar un módulo dinámico en el ensamblado dinámico.
TypeBuilder Este tipo, derivado de Type, se emplea para generar un tipo de forma dinámica. A partir de él se pueden solicitar instancias de los tipos FieldBuilder, ConstructorBuilder y MethodBuilder. Con estos tipos, el ejemplo genera un tipo completo.
MethodBuilder Se emplea para definir un método en un tipo dinámico.
ILGenerator El tipo MethodBuilder implementa el método GetILGenerator, que devuelve una instancia del tipo ILGenerator. Este tipo se utiliza para generar código en lenguaje intermedio de Microsoft (MSIL) de forma dinámica.
Delegados y eventos
- ResolveEventHandler Se emplea para indicar un método de devolución de llamada al que debe llamarse cuando se produzca un error en la resolución de tipos.
Vea también
Referencia
Otros recursos
Emitir métodos y ensamblados dinámicos