Reenvío de tipos en Common Language Runtime
Actualización: noviembre 2007
El reenvío de tipos le permite mover un tipo a otro ensamblado sin tener que volver a compilar las aplicaciones que utilizan el ensamblado original.
Por ejemplo, supongamos que una aplicación utiliza la clase Example en un ensamblado denominado Utility.dll. Los desarrolladores de Utility.dll podrían decidir refactorizar el ensamblado y, en el proceso, podrían mover la clase Example a otro ensamblado. Si se reemplaza la versión antigua de Utility.dll por la nueva versión de Utility.dll y su ensamblado complementario, se producirá un error en la aplicación que utiliza la clase Example porque no podrá localizar la clase Example en la nueva versión de Utility.dll.
Los desarrolladores de Utility.dll pueden evitarlo reenviando solicitudes a la clase Example mediante el atributo TypeForwardedToAttribute. Si el atributo ya se ha aplicado a la nueva versión de Utility.dll, las solicitudes a la clase Example se reenviarán al ensamblado que en estos momentos contenga la clase. La aplicación existente continuará funcionando normalmente, sin volver a compilarse.
Nota: |
---|
En la versión 2.0 de .NET Framework, no pueden reenviarse tipos de ensamblados escritos en Visual Basic. Pero una aplicación escrita en Visual Basic puede utilizar tipos reenviados. Es decir, si la aplicación utiliza un ensamblado codificado en C# o C++ y un tipo de ese ensamblado se reenvía a otro ensamblado, la aplicación de Visual Basic puede utilizar el tipo reenviado. |
Reenviar tipos
Para reenviar un tipo, hay que seguir cuatro pasos:
Mueva el código fuente del tipo del ensamblado original al ensamblado de destino.
En el ensamblado donde antes estaba localizado el tipo, agregue TypeForwardedToAttribute al tipo que se ha movido. En el siguiente código se muestra el atributo para un tipo denominado Example que se ha movido.
[assembly:TypeForwardedToAttribute(typeof(Example))]
[assembly:TypeForwardedToAttribute(Example::typeid)]
Compile el ensamblado que en estos momentos contenga el tipo.
Vuelva a compilar el ensamblado donde antes estaba localizado el tipo, con una referencia al ensamblado que en estos momentos contenga el tipo. Por ejemplo, si está compilando un archivo de C# desde la línea de comandos, utilice la opción /reference (Importar metadatos) (Opciones del compilador de C#) para especificar el ensamblado que contiene el tipo. En C++, utilice la directiva #using del archivo de código fuente para especificar el ensamblado que contiene el tipo.