Compartir a través de


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:

Download sample

Para generar el ejemplo desde el símbolo del sistema

  1. 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.

  2. 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

  1. Abra el Explorador de Windows y navegue hasta el subdirectorio específico de uno de los lenguajes para tener acceso al ejemplo.

  2. 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.

  3. En el menú Generar, haga clic en Generar solución.

Para ejecutar el ejemplo

  1. Abra la ventana del símbolo del sistema y navegue hasta el directorio que contiene el archivo ejecutable generado.

  2. 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

Activator

AppDomain

AssemblyBuilder

AssemblyBuilderAccess

AssemblyName

FileNotFoundException

ILGenerator

MethodAttributes

MethodBuilder

MethodInfo

ModuleBuilder

ResolveEventHandler

System.IO

System.Reflection

System.Reflection.Emit

TypeBuilder

Otros recursos

Reflexión

Emitir métodos y ensamblados dinámicos

Generación y compilación dinámicas de código fuente

Controlar y provocar eventos

Eventos administrados y no administrados