類型等價和內嵌 Interop 類型

從 .NET Framework 4 開始,Common Language Runtime 支援將 COM 類型的類型資訊直接內嵌到 Managed 組件,而不需要 Managed 組件從 Interop 組件取得 COM 類型的類型資訊。 因為內嵌類型資訊僅包含 Managed 組件實際所使用的類型和成員,所以兩個 Managed 組件可能對於相同的 COM 類型會有非常不同的檢視。 每個 Managed 組件有不同的 Type 物件以代表其 COM 類型檢視。 通用語言執行平台支援介面、結構、列舉和委派等這些不同檢視之間的類型等價。

類型等價表示從一個 Managed 組件傳到另一個的 COM 物件,可以在接收的組件中轉換成適當的 Managed 類型。

注意

類型等價和內嵌 Interop 類型簡化了使用 COM 元件之應用程式和增益集的部署,因為不必與應用程式一起部署 Interop 組件。 共用 COM 元件的開發人員仍然必須建立主要 Interop 組件 (PIA),如果他們想要舊版 .NET Framework 使用其元件的話。

類型等價

針對介面、結構、列舉和委派支援 COM 類型等價。 如果下列所有各項都為 true,COM 類型便視相等:

  • 類型同時為介面,或同時為結構,或同時為列舉,或同時為委派。

  • 類型具有相同的身分識別,如下一節中所述。

  • 這兩個類型都適合類型等價,如標記類型等價的 COM 類型一節中所述。

類型身分識別

當兩個類型的範圍和身分識別相符時,會判斷它們具有相同的身分識別;換句話說,如果它們都有 TypeIdentifierAttribute 屬性,且兩個屬性都有相符的 ScopeIdentifier 屬性。 Scope 的比較不區分大小寫。

如果類型沒有 TypeIdentifierAttribute 屬性,或它具有未指定範圍和識別項的 TypeIdentifierAttribute 屬性,該類型仍可以視為等價,如下所示:

標記類型等價的 COM 類型

您可以將類型標記為適合類型等價,有兩種方法:

另請參閱