Compartir a través de


Ejemplo Reflection Invoke Technology

Actualización: noviembre 2007

Este ejemplo muestra cómo implementar el enlace en tiempo de ejecución en un ensamblado administrado con clases y métodos públicos. Desde la línea de comandos deberá seleccionar un ensamblado, un tipo, un método y los parámetros. El ejemplo intentará cargar el ensamblado, buscar el tipo y el método, e invocar el método con los parámetros pasados. Intentará incluso realizar las conversiones de tipos necesarias para las llamadas al método que toman parámetros que no son cadenas. Las clases de reflexión hacen que esta avanzada funcionalidad sea sorprendentemente simple. Con el ejemplo se incluye un proyecto de archivo DLL denominado Tester.dll. El proyecto de comprobador proporciona un tipo simple con algunos métodos para probarlos con el ejemplo de invocación.

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. Navegue hasta el subdirectorio específico de uno de los lenguajes para obtener el ejemplo.

  2. Escriba msbuild InvokeCS.sln o msbuild InvokeVB.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 InvokeCS.sln o InvokeVB.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.

Nota:

Este ejemplo genera una aplicación de consola. Para poder ver el resultado, debe iniciarla desde la línea de comandos.

Invoke.exe acepta parámetros de la línea de comandos que indican lo que desearía invocar. Si el ejemplo se ejecuta sin parámetros se mostrará su uso. Utilice la sintaxis siguiente para invocar un método de un tipo:

Invoke.exe [Assembly] [Type] [Method] [Parameters...]  

Para ejecutar el ejemplo

  1. Navegue hasta el directorio que contiene los archivos Invoke.exe y Tester.dll.

  2. Escriba Invoke.exe [Ensamblado] [Tipo] [Método] [Parámetros...] en la línea de comandos.

Comentarios

La herramienta msbuild genera dos archivos, Invoke.exe y Tester.dll.

En el ejemplo siguiente, se llama al método ShowMessage del tipo SomeType con tres parámetros:

Invoke.exe Tester.dll Microsoft.Samples.SomeType ShowMessage "This is an example of a message." "Question:" 4

Para obtener más información sobre la invocación de la reflexión, lea los comentarios de los archivos de código fuente.

Los elementos siguientes describen brevemente las clases y las tecnologías que se utilizan en este ejemplo.

  • Reflexión

    • AssemblySe emplea para cargar un ensamblado y para buscar un tipo en él.

    • Type Se emplea para obtener una matriz de instancias de MemberInfo, así como para hacer referencia a un tipo al crear una instancia, si fuera necesario.

    • MethodInfo Se emplea para detectar información sobre un método, incluidos los parámetros y el nombre del método. El ejemplo compara la información de este tipo con la información proporcionada en la línea de comandos. MethodInfo también se utiliza para invocar un método.

    • ParameterInfo Se emplea principalmente para buscar el tipo de parámetros del método, de modo que el ejemplo pueda convertir apropiadamente los argumentos de la línea de comandos.

    • Activator Se emplea para crear una instancia de un tipo, si el ejemplo considera que se necesita una llamada a un método de instancia.

  • Sistema

    • Array Se emplea para copiar una parte de una matriz en otra matriz.

    • Convert Se emplea para intentar convertir los argumentos de la línea de comandos, que son del tipo String, al tipo adecuado para los parámetros pasados a los métodos de un tipo determinado.

Vea también

Referencia

Activator

Array

Assembly

AssemblyBuilderAccess

Convert

MethodAttributes

MethodInfo

ParameterInfo

System.Reflection

Type

Otros recursos

Reflexión

Emitir métodos y ensamblados dinámicos

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