Předávání typů v modulu CLR (Common Language Runtime)Type forwarding in the common language runtime

Přesměrování typu umožňuje přesunout typ do jiného sestavení bez nutnosti opětovné kompilace aplikací, které používají původní sestavení.Type forwarding allows you to move a type to another assembly without having to recompile applications that use the original assembly.

Předpokládejme například, že aplikace používá třídu Example v sestavení s názvem Utility. dll.For example, suppose an application uses the Example class in an assembly named Utility.dll. Vývojáři nástroje Utility. dll se mohou rozhodnout Refaktorovat sestavení a v procesu, který by mohl přesunout třídu Example do jiného sestavení.The developers of Utility.dll might decide to refactor the assembly, and in the process they might move the Example class to another assembly. Pokud je stará verze souboru Utility. dll nahrazena novou verzí nástroje Utility. dll a jeho doprovodné sestavení, aplikace, která používá Example třídy, se nezdařila, protože nemůže najít třídu Example v nové verzi nástroje. dll. .If the old version of Utility.dll is replaced by the new version of Utility.dll and its companion assembly, the application that uses the Example class fails because it cannot locate the Example class in the new version of Utility.dll.

Vývojáři nástroje Utility. dll se k tomu mohou vyhnout přesměrováním požadavků pro třídu Example pomocí atributu TypeForwardedToAttribute.The developers of Utility.dll can avoid this by forwarding requests for the Example class, using the TypeForwardedToAttribute attribute. Pokud byl atribut použit pro novou verzi nástroje Utility. dll, požadavky na třídu Example jsou předávány sestavení, které nyní obsahuje třídu.If the attribute has been applied to the new version of Utility.dll, requests for the Example class are forwarded to the assembly that now contains the class. Stávající aplikace bude nadále fungovat normálně bez nutnosti rekompilace.The existing application continues to function normally, without recompilation.

Poznámka

V .NET Framework verze 2,0 nemůžete předávané typy ze sestavení napsaných v Visual Basic.In the .NET Framework version 2.0, you cannot forward types from assemblies written in Visual Basic. Aplikace napsaná v Visual Basic však může využívat předané typy.However, an application written in Visual Basic can consume forwarded types. To znamená, že pokud aplikace používá sestavení kódované v C# nebo C++a typ z tohoto sestavení je předáván do jiného sestavení, Visual Basic aplikace může použít předaný typ.That is, if the application uses an assembly coded in C# or C++, and a type from that assembly is forwarded to another assembly, the Visual Basic application can use the forwarded type.

Předávané typyForward types

Existují čtyři kroky pro předání typu:There are four steps to forwarding a type:

  1. Přesune zdrojový kód pro typ z původního sestavení do cílového sestavení.Move the source code for the type from the original assembly to the destination assembly.

  2. Do sestavení, kde se používá typ, přidejte TypeForwardedToAttribute pro typ, který byl přesunut.In the assembly where the type used to be located, add a TypeForwardedToAttribute for the type that was moved. Následující kód ukazuje atribut pro typ s názvem Example, který byl přesunut.The following code shows the attribute for a type named Example that was moved.

     [assembly:TypeForwardedToAttribute(Example::typeid)]  
    
     [assembly:TypeForwardedToAttribute(typeof(Example))]  
    
  3. Zkompilujte sestavení, které nyní obsahuje typ.Compile the assembly that now contains the type.

  4. Znovu zkompilujte sestavení, kde se nachází typ, s odkazem na sestavení, které nyní obsahuje typ.Recompile the assembly where the type used to be located, with a reference to the assembly that now contains the type. Například pokud kompilujete C# soubor z příkazového řádku, použijte možnost -Reference (C# možnosti kompilátoru) k určení sestavení, které obsahuje typ.For example, if you are compiling a C# file from the command line, use the -reference (C# compiler options) option to specify the assembly that contains the type. V C++Použijte direktivu #using ve zdrojovém souboru k určení sestavení, které obsahuje daný typ.In C++, use the #using directive in the source file to specify the assembly that contains the type.

Viz také:See also