共用方式為


Common Language Runtime 中的型別轉送

型別轉送可讓您將某種型別移到其他組件,而不需重新編譯使用原始組件的應用程式。

例如,假設某應用程式在名為 Utility.dll 的組件內使用了 Example 類別。 Utility.dll 的開發人員可能決定要重構該組件,而在過程中可能會將 Example 類別移到另一個組件。 如果以新版的 Utility.dll 和其附屬的組件取代了舊版的 Utility.dll,則使用 Example 類別的應用程式將無法執行,因為該應用程式無法在新版的 Utility.dll 內找到 Example 類別。

Utility.dll 的開發人員可以使用 TypeForwardedToAttribute 屬性 (Attribute) 來轉送 Example 類別的要求,以避免這種情形發生。 如果已將此屬性套用到新版的 Utility.dll,則 Example 類別的要求會轉送到目前包含該類別的組件。 現有的應用程式可繼續正常運作,而不需要重新編譯。

注意事項注意事項

在 .NET Framework 2.0 版中,您無法轉送以 Visual Basic 撰寫之組件的型別,不過,以 Visual Basic 撰寫的應用程式可以使用轉送的型別。也就是說,如果應用程式使用了以 C# 或 C++ 撰寫的組件,並且將該組件中的型別轉送到另一個組件,則 Visual Basic 應用程式便可以使用該轉送的型別。

轉送型別

轉送型別需要進行四個步驟:

  1. 將型別的原始程式碼從原始組件移到目的組件。

  2. 在用於找出型別的組件中,為移動的型別加入 TypeForwardedToAttribute。 下列程式碼會示範已移動之 Example 型別的屬性 (Attribute)。

    [assembly:TypeForwardedToAttribute(typeof(Example))]
    
    [assembly:TypeForwardedToAttribute(Example::typeid)]
    
  3. 編譯目前包含此型別的組件。

  4. 重新編譯用於找出此型別的組件,其中包含目前包含此型別之組件的參考。 例如,如果您正從命令列編譯 C# 檔案,請使用 /reference (C# 編譯器選項) 選項來指定包含此型別的組件。 在 C++ 中,於原始程式檔 (Source File) 內使用 #using 指示詞可指定包含此型別的組件。

請參閱

參考

TypeForwardedToAttribute

Type Forwarding

#using Directive (C/C++)