精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

學習C#接口編程——C#接口轉換

開發 后端
本文全面剖析了C#接口編程中的接口C#接口轉換,即使用ComImport引用COM組件,希望大家從中有所收獲。

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 框架兼容的類型。

C#接口轉換:使用ComImport引用COM組件

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

· 創建 COM 對象。

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

· 調用 COM 接口上的方法。

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

創建 COM 類包裝

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

TlbImp 執行下列轉換:

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

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

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

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

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

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

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

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

· PreserveSig,它指定是否應將本機返回值從 HRESULT 轉換為 .NET 框架異常。

聲明 COM coclass

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

· 類不能從任何其他類繼承。

· 類不能實現任何接口。

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

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

 C# 中聲明一個 coclass  

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

創建 COM 對象

COM coclass 在 C# 中表示為具有無參數構造函數的類。使用 new 運算符創建該類的實例等效于在 C# 中調用 CoCreateInstance。使用以上定義的類,就可以很容易地實例化此類: 

實例化此類 

聲明 COM 接口

COM 接口在 C# 中表示為具有 ComImport 和 Guid屬性的接口。它不能在其基接口列表中包含任何接口,而且必須按照方法在 COM 接口中出現的順序聲明接口成員函數。

在 C# 中聲明的 COM 接口必須包含其基接口的所有成員的聲明,IUnknown 和 IDispatch 的成員除外(.NET 框架將自動添加這些成員)。從 IDispatch 派生的 COM 接口必須用 InterfaceType 屬性予以標記。

從 C# 代碼調用 COM 接口方法時,公共語言運行庫必須封送與 COM 對象之間傳遞的參數和返回值。對于每個 .NET 框架類型均有一個默認類型,公共語言運行庫將使用此默認類型在 COM 調用間進行封送處理時封送。例如,C# 字符串值的默認封送處理是封送到本機類型 LPTSTR(指向 TCHAR 字符緩沖區的指針)。可以在 COM 接口的 C# 聲明中使用 MarshalAs 屬性重寫默認封送處理。

在 COM 中,返回成功或失敗的常用方法是返回一個 HRESULT,并在 MIDL 中有一個標記為"retval"、用于方法的實際返回值的 out 參數。在 C#(和 .NET 框架)中,指示已經發生錯誤的標準方法是引發異常。

默認情況下,.NET 框架為由其調用的 COM 接口方法在兩種異常處理類型之間提供自動映射。

返回值更改為標記為 retval 的參數的簽名(如果方法沒有標記為 retval 的參數,則為 void)。

標記為 retval 的參數從方法的參數列表中剝離。

任何非成功返回值都將導致引發 System.COMException 異常。

此示例顯示用 MIDL 聲明的 COM 接口以及用 C# 聲明的同一接口(注意這些方法使用 COM 錯誤處理方法)。

下面是C#接口轉換的C#程序:

接口轉換的C#程序 

 

若要防止 HRESULT 翻譯為 COMException,請在 C# 聲明中將 PreserveSig(true) 屬性附加到方法。

下面是一個使用C# 映射媒體播放機COM 對象的程序。

使用C# 映射媒體播放機COM 對象的程序  

運行示例:

若要顯示影片示例 Clock.avi,請使用以下命令: 

使用以下命令 

這將在屏幕上顯示影片,直到按 ENTER 鍵停止。

在 .NET 框架程序中通過DllImport使用 Win32 API

.NET 框架程序可以通過靜態 DLL 入口點的方式來訪問本機代碼庫。DllImport 屬性用于指定包含外部方法的實現的dll 位置。

DllImport 屬性定義如下:

DllImport 屬性定義  

說明:

· DllImport只能放置在方法聲明上。

· DllImport具有單個定位參數:指定包含被導入方法的 dll 名稱的 dllName 參數。

· DllImport具有五個命名參數:

CallingConvention 參數指示入口點的調用約定。如果未指定 CallingConvention,則使用默認值 CallingConvention.Winapi。

CharSet 參數指示用在入口點中的字符集。如果未指定 CharSet,則使用默認值 CharSet.Auto。

EntryPoint 參數給出 dll 中入口點的名稱。如果未指定 EntryPoint,則使用方法本身的名稱。

ExactSpelling 參數指示 EntryPoint 是否必須與指示的入口點的拼寫完全匹配。如果未指定 ExactSpelling,則使用默認值 false。

PreserveSig 參數指示方法的簽名應當被保留還是被轉換。當簽名被轉換時,它被轉換為一個具有 HRESULT 返回值和該返回值的一個名為 retval 的附加輸出參數的簽名。如果未指定 PreserveSig,則使用默認值 true。

SetLastError 參數指示方法是否保留 Win32"上一錯誤"。如果未指定 SetLastError,則使用默認值 false。

· 它是一次性屬性類。

· 此外,用 DllImport 屬性修飾的方法必須具有 extern 修飾符。

下面是 C# 調用 Win32 MessageBox 函數的示例:

C# 調用 Win32 MessageBox 函數的示例 

面向對象的編程語言幾乎都用到了抽象類這一概念,抽象類為實現抽象事物提供了更大的靈活性。C#也不例外,C#通過覆蓋虛接口的技術深化了抽象類的應用。

以上就是對C#接口轉換的介紹。

【編輯推薦】

  1. C#3.5新特性的介紹
  2. C#中DirectSound錄音的使用
  3. C#擴展方法性能測試對比
  4. C#多標簽瀏覽器功能的擴展
  5. C#標簽的制作:多標簽的實現
責任編輯:book05 來源: 新浪博客
相關推薦

2009-08-24 11:02:52

C#接口映射

2009-08-24 10:06:31

C#接口成員

2009-08-25 10:44:08

C#接口定義接口

2009-08-25 10:57:09

C#接口

2009-08-24 10:31:37

C#接口繼承

2009-08-31 18:17:32

C#接口編程

2009-08-31 17:02:28

C#接口編程

2009-08-24 10:47:45

C#接口重實現

2009-08-20 18:06:18

學習C#接口

2009-08-12 15:55:12

C#接口定義

2009-09-02 14:14:44

C# COM接口轉換

2009-08-24 11:20:03

C#接口

2009-08-14 17:58:05

C#接口方法

2009-08-03 18:08:39

C# ICloneab

2009-08-31 15:55:17

C#實現Strateg

2009-08-31 13:18:09

C# IWebMess

2009-08-25 17:55:52

C#實現Strateg

2009-08-10 10:04:25

C#抽象類C#接口

2009-08-03 18:26:18

C#定義接口成員

2009-09-04 13:22:31

C#實現多個接口
點贊
收藏

51CTO技術棧公眾號

精品动漫3d一区二区三区免费| 性欧美18xxxhd| 国产一区二区福利| 久久久久久国产精品久久| 鲁大师私人影院在线观看| 日韩精品99| 亚洲精品中文字幕在线观看| 精品久久久久亚洲| 亚洲一卡二卡在线| 在线成人欧美| xxx一区二区| yy6080午夜| 日韩有码欧美| 欧美日韩国产精品专区| 热这里只有精品| 青青操视频在线| 国产精品一区二区久激情瑜伽| 欧美在线不卡区| 青娱乐国产在线视频| 精品一区二区三| 亚洲国产欧美一区| av在线网站免费观看| 日韩av首页| 精品久久久久久久久久| 欧美少妇一区二区三区| 国产精品免费观看| 9人人澡人人爽人人精品| 91久久精品美女| 无码人妻久久一区二区三区不卡| 欧美日韩亚洲国产精品| 日韩午夜在线视频| 国产真实乱人偷精品人妻| 97超碰成人| 欧美老肥妇做.爰bbww| 国产三级日本三级在线播放| 91老司机福利在线| 亚洲一级二级三级在线免费观看| 在线播放 亚洲| 91社区在线观看播放| 国产日韩欧美高清| 免费亚洲精品视频| 日韩美女一级视频| 不卡区在线中文字幕| 成人欧美一区二区| 午夜老司机福利| 国产伦精品一区二区三区免费 | 免费在线观看一区| 欧美日韩中文字幕在线视频| 青青青国产在线观看| 国产第一页在线| 亚洲成人免费看| 婷婷五月综合缴情在线视频| √天堂8资源中文在线| 亚洲午夜羞羞片| 加勒比成人在线| 爱草tv视频在线观看992| 亚洲高清在线精品| av免费观看网| 欧美成a人片在线观看久| 色哟哟亚洲精品| 熟女少妇精品一区二区| 国语自产精品视频在线看抢先版结局| 在线免费不卡电影| 色播五月综合网| www.久久热| 欧美大片免费久久精品三p| 午夜性福利视频| 欧美激情网址| 国产一区二区三区在线免费观看| 手机看片日韩av| 国产精品久久久久久久久久10秀| 久久这里只有精品99| 麻豆一区产品精品蜜桃的特点 | 国产精品久99| 黄黄视频在线观看| 黄视频网站在线观看| 色婷婷精品大视频在线蜜桃视频| 午夜免费高清视频| 久久天堂久久| 精品视频在线播放色网色视频| 99久久久无码国产精品性 | 日韩在线视频播放| 国产精品成人免费观看| 亚洲精品1区2区| 国产精品草莓在线免费观看 | 99精品一级欧美片免费播放| 在线中文字幕电影| 色婷婷国产精品综合在线观看| 国产高潮免费视频| 777久久精品| 亚洲最新av在线网站| 18岁成人毛片| 久久三级视频| 成人午夜电影在线播放| 精品视频三区| 亚洲综合另类小说| 久久精品免费网站| www.豆豆成人网.com| 亚洲一区二区精品| 精品无码m3u8在线观看| 日韩av中文在线观看| 不卡一卡2卡3卡4卡精品在| 欧美日韩国产综合视频 | 国产成人在线播放视频| 久久福利视频一区二区| 精品网站在线看| 含羞草www国产在线视频| 欧美日韩精品在线观看| 中文字幕亚洲影院| 精品久久久久中文字幕小说 | 丰满白嫩尤物一区二区| 先锋影音亚洲资源| 国产精品vvv| 日韩一区二区视频在线观看| 欧美三级视频网站| 一本一本久久| 成人自拍爱视频| 久操视频在线播放| 欧美影片第一页| 中文在线一区二区三区| 国产精品vip| 91久久久亚洲精品| 福利在线观看| 色欧美片视频在线观看 | 欧美综合精品| 欧美极品少妇与黑人| 国产毛片毛片毛片毛片| 亚洲国产精品二十页| aa在线免费观看| 国产精品中文字幕制服诱惑| 美日韩精品视频免费看| 91精品国自产| 国产精品人人做人人爽人人添| 国产精品丝袜久久久久久消防器材| 亚洲天堂av资源在线观看| 久久精品视频中文字幕| 最近中文字幕在线观看视频| 久久久久九九视频| www.com毛片| 曰本一区二区三区视频| 浅井舞香一区二区| 色视频在线观看福利| 疯狂欧美牲乱大交777| 中文字幕精品久久久| 亚洲人成免费| 久久精品国产精品国产精品污 | 久久99精品久久久久久久久久 | 大片免费播放在线视频| 色诱视频网站一区| 黄免费在线观看| 男人的j进女人的j一区| 亚洲一区二区三区精品在线观看| 欧美一级二级视频| 中文日韩在线观看| 在线观看中文字幕网站| 国产精品成人午夜| 亚洲18在线看污www麻豆| 一本精品一区二区三区| 99三级在线| 55av亚洲| 中日韩美女免费视频网站在线观看 | 国产传媒一区| 极品在线视频| 夜夜躁日日躁狠狠久久88av| 91丨九色丨丰满| 亚洲精品乱码久久久久久| 日本少妇xxxx软件| 先锋影音久久久| 亚洲成人午夜在线| 国产精品美女久久久久| 欧美精品18videos性欧| 日本五码在线| 欧美日韩高清一区二区三区| 波多野结衣爱爱视频| 成人精品视频.| av免费在线播放网站| 成人精品中文字幕| 97人人模人人爽人人少妇| 黄色污网站在线观看| 伊人激情综合网| 午夜精品久久久久久久99热黄桃 | 青梅竹马是消防员在线| 欧美日韩精品综合在线| 久久久久久久久久综合| 久久久久久99精品| 在线免费看v片| 国产日韩一区二区三区在线| 亚洲欧美一区二区原创| swag国产精品一区二区| 国产精品久久久久久久久久久久 | 少妇性bbb搡bbb爽爽爽欧美| 欧美性xxxxxx少妇| 久久久一二三区| 日本一区免费视频| 东京热av一区| 久久精品国产77777蜜臀| 免费不卡av在线| 午夜精品一区二区三区国产| 久久久7777| 日韩高清一区| 国产精品色视频| 玖玖在线播放| 欧美老女人在线视频| 国产精品99999| 欧美精品一区二区三区高清aⅴ| 五月天中文字幕| 欧美日韩美女视频| 激情综合五月网| 亚洲视频你懂的| 精品国产成人亚洲午夜福利| 成人午夜激情视频| 亚洲女人在线观看| 麻豆国产欧美一区二区三区| 欧美成人高潮一二区在线看| 亚洲大全视频| 性欧美大战久久久久久久免费观看| 久久影院资源站| 97se亚洲综合| 高清一区二区| 国产精品专区第二| 国产精欧美一区二区三区蓝颜男同| 欧美激情一区二区三区成人 | 91国内精品久久| 日本一本在线免费福利| 久久精品2019中文字幕| 第三区美女视频在线| 精品一区二区电影| 天天操天天干天天爱| 精品噜噜噜噜久久久久久久久试看| 91午夜交换视频| 欧美日韩视频不卡| 天天操天天干天天摸| 一本久久精品一区二区| 91国产丝袜播放在线| 精品久久久久久电影| 亚洲国产精品成人无久久精品| 一区二区三区日韩欧美| 免费视频一二三区| 亚洲乱码国产乱码精品精98午夜| 91禁男男在线观看| 国产精品色婷婷久久58| 亚洲色图日韩精品| 国产精品国产自产拍高清av | 国产一区日韩欧美| 中文字幕在线中文| 欧美国产精品| 日韩精品在线视频免费观看| 影音先锋在线一区| 国产 日韩 亚洲 欧美| 中文在线一区| 国产成人在线免费看| 国产精品一卡| 熟女人妇 成熟妇女系列视频| 久久久久久夜| 五月天av在线播放| 国产一区在线观看视频| gogo亚洲国模私拍人体| 成人涩涩免费视频| 黄色国产在线观看| 久久久精品欧美丰满| www.黄色com| 樱桃视频在线观看一区| 国产精品50页| 色婷婷一区二区| 91在线你懂的| 欧美一级在线视频| 色噜噜一区二区三区| 亚洲免费视频在线观看| 91高清在线| 色综合久久88色综合天天看泰| 波多野结衣中文在线| 日本高清+成人网在线观看| 日本综合视频| 91精品国产综合久久久久久丝袜| 国产成人高清精品免费5388| 久久综合一区二区三区| 成人羞羞视频在线看网址| 黄色高清视频网站| 亚洲伦理精品| 在线免费视频一区| 成人永久免费视频| 手机免费看av| 亚洲午夜久久久久久久久电影网 | 伊人在线视频观看| 性做久久久久久免费观看| 羞羞色院91蜜桃| 精品久久久久一区| fc2在线中文字幕| 久久久久免费视频| 韩国理伦片久久电影网| 精品视频免费观看| 亚洲欧美网站在线观看| 黄色片视频在线免费观看| 国产真实乱子伦精品视频| 久久久国产精品无码| 中文字幕在线免费不卡| 男女视频免费看| 91精品国产综合久久福利软件| 无码国产精品高潮久久99| 久久这里有精品视频| 精品视频一区二区三区四区五区| 国产精品久久久久久久久婷婷| 精品久久综合| 奇米精品一区二区三区| 激情六月婷婷久久| 无码h肉动漫在线观看| 一区二区三区影院| 亚洲在线观看av| 亚洲男女性事视频| 日韩精品卡一| 成人激情av在线| 久9久9色综合| 极品美女扒开粉嫩小泬| 精品亚洲porn| 中文字幕在线观看免费高清| 亚洲成人免费在线观看| wwwav网站| 久久中国妇女中文字幕| 亚洲成av在线| 久久手机视频| 日韩午夜高潮| 2018国产精品| 伊人婷婷欧美激情| 91成人在线免费| 中文字幕无线精品亚洲乱码一区 | 久久久免费看| 在线观看视频日韩| 亚洲妇女无套内射精| 亚洲色大成网站www久久九九| 午夜视频网站在线观看| 亚洲美女激情视频| 最近在线中文字幕| 欧美不卡三区| 老鸭窝毛片一区二区三区| 日本黄色网址大全| 欧美日韩一区二区免费在线观看| 日本韩国免费观看| 国产69精品久久久久9999| 日韩成人18| 国产成人永久免费视频| 国产99精品视频| 久久综合综合久久| 精品久久五月天| heyzo高清在线| 久99久视频| 久久久蜜桃一区二区人| 受虐m奴xxx在线观看| 欧美日韩国产色| 精品乱码一区二区三四区视频| 国产成人精品免费久久久久| 欧美女优在线视频| 在线免费观看视频黄| 国产精品久久二区二区| 99国产精品99| 久久久久成人精品| 丝袜连裤袜欧美激情日韩| 国产xxxxx在线观看| 国产亚洲欧美激情| 中文字幕丰满人伦在线| 久久久999国产精品| 日韩欧美中文字幕一区二区三区| 女人被男人躁得好爽免费视频 | 精选一区二区三区四区五区| 欧美亚洲网站| 黄色免费一级视频| 日韩亚洲国产中文字幕欧美| 1区2区3区在线| 欧美日韩天天操| 久久精品国产亚洲aⅴ| 福利所第一导航| 亚洲精品www久久久| 日韩av首页| 日本免费成人网| 2024国产精品| 97人人爽人人爽人人爽| 欧美激情一区二区三区成人| 亚洲第一二三区| 福利片一区二区三区| 亚洲综合999| 国产污视频在线| 高清视频一区| 日本亚洲一区二区| 久久免费视频播放| 国产亚洲精品高潮| 一区三区自拍| 99热手机在线| 亚洲一区二区高清| 黄色av免费在线观看| 91黄色国产视频| 日韩极品在线观看| 免费在线一区二区三区| 亚洲无线码在线一区观看| 麻豆国产一区| 91视频免费版污| 性做久久久久久免费观看欧美| 欧美三级黄网| 欧美日本韩国一区二区三区| 国产精品主播直播| 中文在线观看免费高清| 久久全国免费视频|