国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

基于C#的接口基礎教程之六

2024-09-07 17:05:37
字體:
來源:轉載
供稿:網友

推薦:基于C#的接口基礎教程之五
  第五節、實現接口  1、顯式實現接口成員  為了實現接口,類可以定義顯式接口成員執行體(Explicit interface member implementations)。顯式接口成員執行體可以是一個方法、一個

  第六節、接口轉換

  C#中不僅支持.Net 平臺,而且支持COM平臺。為了支持 COM和.Net,C# 包含一種稱為屬性的獨特語言特性。一個屬性實際上就是一個 C# 類,它通過修飾源代碼來提供元信息。屬性使 C# 能夠支持特定的技術,如 COM 和 .Net,而不會干擾語言規范本身。C# 提供將COM接口轉換為 C#接口的屬性類。另一些屬性類將 COM類轉換為C# 類。執行這些轉換不需要任何 IDL 或類工廠。

  現在部署的任何COM 組件都可以在接口轉換中使用。通常情況下,所需的調整是完全自動進行的。

  特別是,可以使用運行時可調用包裝 (RCW) 從 .NET 框架訪問 COM 組件。此包裝將 COM 組件提供的 COM 接口轉換為與 .NET 框架兼容的接口。對于 OLE 自動化接口,RCW 可以從類型庫中自動生成;對于非 OLE 自動化接口,開發人員可以編寫自定義 RCW,手動將 COM 接口提供的類型映射為與 .NET 框架兼容的類型。

  使用ComImport引用COM組件
COM Interop 提供對現有 COM 組件的訪問,而不需要修改原始組件。使用ComImport引用COM組件常包括下面 幾個方面的問題:

  1、創建 COM 對象。

  2、確定 COM 接口是否由對象實現。

  3、調用 COM 接口上的方法。

  4、實現可由 COM 客戶端調用的對象和接口。

  創建 COM 類包裝

  要使 C# 代碼引用COM 對象和接口,需要在 C# 中包含 COM 接口的定義。完成此操作的最簡單方法是使用 TlbImp.exe(類型庫導入程序),它是一個包括在 .NET 框架 SDK 中的命令行工具。TlbImp 將 COM 類型庫轉換為 .NET 框架元數據,從而有效地創建一個可以從任何托管語言調用的托管包裝。用 TlbImp 創建的 .NET 框架元數據可以通過 /R 編譯器選項包括在 C# 內部版本中。如果使用 Visual Studio 開發環境,則只需添加對 COM 類型庫的引用,將為您自動完成此轉換。

  TlbImp 執行下列轉換:

  1、COM coclass 轉換為具有無參數構造函數的 C# 類。

  2、COM 結構轉換為具有公共字段的 C# 結構。

  檢查 TlbImp 輸出的一種很好的方法是運行 .NET 框架 SDK 命令行工具 Ildasm.exe(Microsoft 中間語言反匯編程序)來查看轉換結果。

  雖然 TlbImp 是將 COM 定義轉換為 C# 的首選方法,但也不是任何時候都可以使用它(例如,在沒有 COM 定義的類型庫時或者 TlbImp 無法處理類型庫中的定義時,就不能使用該方法)。在這些情況下,另一種方法是使用 C# 屬性在 C# 源代碼中手動定義 COM 定義。創建 C# 源映射后,只需編譯 C# 源代碼就可產生托管包裝。

  執行 COM 映射需要理解的主要屬性包括:

  1、ComImport:它將類標記為在外部實現的 COM 類。

  2、Guid:它用于為類或接口指定通用唯一標識符 (UUID)。

  3、InterfaceType,它指定接口是從 IUnknown 還是從 IDispatch 派生。

  4、PreserveSig,它指定是否應將本機返回值從 HRESULT 轉換為 .NET 框架異常。
  聲明 COM coclass

  COM coclass 在 C# 中表示為類。這些類必須具有與其關聯的 ComImport 屬性。下列限制適用于這些類:

  1、類不能從任何其他類繼承。

  2、類不能實現任何接口。

  4、類還必須具有為其設置全局唯一標識符 (GUID) 的 Guid 屬性。

  以下示例在 C# 中聲明一個 coclass:

// 聲明一個COM類 FilgraphManager
[ComImport, Guid("E436EBB3-524F-11CE-9F53-0020AF0BA770")]
class FilgraphManager
{ }

  C# 編譯器將添加一個無參數構造函數,可以調用此構造函數來創建 COM coclass 的實例。

分享:基于C#的接口基礎教程之四
  第四節、訪問接口  對接口成員的訪問  對接口方法的調用和采用索引指示器訪問的規則與類中的情況也是相同的。如果底層成員的命名與繼承而來的高層成員一致,那么底層成員將覆蓋同

 

共4頁上一頁1234下一頁
 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄河市| 琼海市| 云林县| 喀什市| 常熟市| 辽源市| 竹溪县| 上杭县| 英吉沙县| 江安县| 饶河县| 永春县| 綦江县| 麻江县| 开封市| 柳江县| 石门县| 平南县| 合阳县| 安福县| 泰顺县| 曲沃县| 光山县| 河曲县| 申扎县| 当涂县| 达日县| 盐边县| 丽水市| 肥东县| 叶城县| 诸暨市| 于都县| 怀集县| 宝兴县| 文安县| 广昌县| 新田县| 雅江县| 东海县| 巫山县|