Transferência de Tipo no Common Language Runtime
Transferência de tipo permite que você mova um tipo para outro conjunto de módulos (assembly) sem ter que recompilar os aplicativos que usam o conjunto original.
Por exemplo, suponha que um aplicativo usa a classe Example em um conjunto de módulos (assembly) denominado Utility.dll.Os desenvolvedores de Utility.dll podem decidir refatorar o módulo (assembly), e durante o processo eles podem mover a classe Example para outro conjunto.Se a versão antiga do Utility.dll é substituída pela nova versão do Utility.dll e seu conjunto complementar, o aplicativo que usa a classe Example falha porque não é possível localizar a classe Example na nova versão do Utility.dll.
Os desenvolvedores de Utility.dll podem evitar que isso aconteça ao encaminhar solicitações para a classe Example, usando o atributo TypeForwardedToAttribute.Se o atributo foi aplicado à nova versão do Utility.dll, as solicitações para a classe Example são encaminhadas ao conjunto que agora contém a classe.O aplicativo continua a funcionar normalmente, sem recompilação.
Observação: |
---|
Na versão 2.0 do .NET Framework, você não pode encaminhar os tipos de conjuntos escritos em Visual Basic.No entanto, um aplicativo escrito em Visual Basic pode consumir tipos encaminhados.Isto é, se o aplicativo usa um conjunto de módulos (assembly) codificado em C# ou C++, e um tipo a partir desse conjunto é encaminhado para outro conjunto, o aplicativo do Visual Basic pode usar o tipo encaminhado. |
Encaminhando tipos
Há quatro etapas para encaminhar um tipo:
Mova o código-fonte do tipo do conjunto original para o conjunto de destino.
No conjunto de módulos onde o tipo usado para ser localizado, adicione um TypeForwardedToAttribute para o tipo que foi movido.O código a seguir mostra o atributo para um tipo chamado Example que foi movido.
[assembly:TypeForwardedToAttribute(typeof(Example))]
[assembly:TypeForwardedToAttribute(Example::typeid)]
Compile o assembly que agora contém o tipo.
Recompile o assembly onde o tipo costumava ser localizado, com uma referência para o assembly que agora contém o tipo.Por exemplo, se você estiver compilando um arquivo a partir de linha de comando C#, use a opção /Referência (importar metadados) (opções do compilador de C#) para especificar o conjunto que contém o tipo.Em C++, use a diretiva #using no arquivo de origem para especificar o conjunto que contém o tipo.