共通言語ランタイムでの型の転送Type forwarding in the common language runtime

型の転送を使用すると、別のアセンブリに型を移動する際に、元のアセンブリを使用するアプリケーションを再コンパイルする必要がありません。Type forwarding allows you to move a type to another assembly without having to recompile applications that use the original assembly.

たとえば、Utility.dll というアセンブリ内の Example クラスをアプリケーションが使用しているとします。For example, suppose an application uses the Example class in an assembly named Utility.dll. その場合、Utility.dll の開発者がアセンブリをリファクタリングすることになった際には、その過程で Example クラスが別のアセンブリに移動される可能性があります。The developers of Utility.dll might decide to refactor the assembly, and in the process they might move the Example class to another assembly. Utility.dll の旧バージョンが Utility.dll の新バージョンとそのコンパニオン アセンブリに置き換えられると、Example クラスを使用するアプリケーションは、新しいバージョンの Utility.dllExample クラスを見つけられないために失敗します。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.

Utility.dll の開発者は、TypeForwardedToAttribute 属性を使用して、Example クラスの要求を転送することで、この問題を回避できます。The developers of Utility.dll can avoid this by forwarding requests for the Example class, using the TypeForwardedToAttribute attribute. この属性が新バージョンの Utility.dll に適用されている場合、Example クラスに対する要求は、現在このクラスを含んでいるアセンブリに転送されます。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. 既存のアプリケーションは、再コンパイルを必要とすることなく正常に機能し続けます。The existing application continues to function normally, without recompilation.

注意

.NET Framework Version 2.0 では、Visual Basic で記述されたアセンブリから型を転送することはできません。In the .NET Framework version 2.0, you cannot forward types from assemblies written in Visual Basic. ただし、Visual Basic で記述されたアプリケーションで、転送された型を使用することはできます。However, an application written in Visual Basic can consume forwarded types. つまり、アプリケーションで使用しているアセンブリが C# または C++ でコーディングされていれば、そのアセンブリの型が別のアセンブリに転送されても、転送された型をVisual Basic アプリケーションで使用できます。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.

転送型Forward types

型の転送は 4 つの手順で行います。There are four steps to forwarding a type:

  1. 型のソース コードを、元のアセンブリから転送先のアセンブリに移動します。Move the source code for the type from the original assembly to the destination assembly.

  2. 配置に使用される型のアセンブリで、移動された型の TypeForwardedToAttribute を追加します。In the assembly where the type used to be located, add a TypeForwardedToAttribute for the type that was moved. 次のコードは、移動された Example という型の属性を示しています。The following code shows the attribute for a type named Example that was moved.

     [assembly:TypeForwardedToAttribute(Example::typeid)]  
    
     [assembly:TypeForwardedToAttribute(typeof(Example))]  
    
  3. 型の現在の場所であるアセンブリをコンパイルします。Compile the assembly that now contains the type.

  4. 型の現在の場所であるアセンブリへの参照を指定して、型の元の場所であるアセンブリを再コンパイルします。Recompile the assembly where the type used to be located, with a reference to the assembly that now contains the type. たとえば、C# ファイルをコマンド ラインからコンパイルする場合は、-reference (C# コンパイラ オプション) オプションを使用して、型の現在の場所であるアセンブリを指定します。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. C++ では、ソース ファイルで #using ディレクティブを使用して、型の現在の場所であるアセンブリを指定します。In C++, use the #using directive in the source file to specify the assembly that contains the type.

関連項目See also