1. 程式人生 > >嵌入互操作型別是什麼鬼

嵌入互操作型別是什麼鬼

 from:http://www.lxway.com/1054562.htm

對於兩個結構相同且共享相同識別特徵(名稱、GUID 等)的 COM 互操作型別,執行時能夠聰明地將其看作同一個 .NET 型別。C# 編譯器利用這一點的方式是在編譯時直接在您自己的程式集中重現互操作型別,因此不再要求在執行時存在該互操作程式集。

由於篇幅所限,我不得不省略一些詳細資訊,但即使不瞭解這些資訊,您也應該能夠毫無障礙的使用這個功能,就像動態功能一樣。您通過將引用上的“嵌入式互操作型別”屬性設定為 true,告訴編譯器為您將互操作型別嵌入到 Visual Studio 中。

由於 C# 團隊希望這種方法成為引用 COM 程式集的首選方法,因此在預設情況下,Visual Studio 會將新增到 C# 專案中的任何新互操作引用的此屬性設定為 True。如果您使用命令列編譯器 (csc.exe) 來編譯您的程式碼,請使用 /L 開關,而不是 /R 開關,來嵌入您必須引用的互操作程式集中的互操作型別。

看到這裡,我們大概有了清楚的認識,那就讓我先做幾點總結(不足之處歡迎補充)。

1.”嵌入互操作型別”中的嵌入就是引進、匯入的意思,類似於c#中using,c中include的作用,目的是告訴編譯器是否要把互操作型別引入。

2.“互操作型別”實際是指一系列Com元件的程式集,是公共執行庫中庫檔案,類似於編譯好的類,介面等。

3.“嵌入互操作型別”設定為true,實際上就是不引入互操作集(編譯時候放棄Com程式集),僅編譯使用者程式碼的程式集。

而設定為false的話,實際就是需要從互操作程式集中獲取 COM 型別的型別資訊