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

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:17:53
字體:
來源:轉載
供稿:網友
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#程序:
  
  using system.runtime.interopservices;
  // 聲明一個com接口 imediacontrol
  [guid("56a868b1-0ad4-11ce-b03a-0020af0ba770"),
  interfacetype(cominterfacetype.interfaceisdual)]
  interface imediacontrol // 這里不能列出任何基接口
  {
  void run();
  void pause();
  void stop();
  void getstate( [in] int mstimeout, [out] out int pfs);
  void renderfile(
  [in, marshalas(unmanagedtype.bstr)] string strfilename);
  void addsourcefilter(
  [in, marshalas(unmanagedtype.bstr)] string strfilename,
  [out, marshalas(unmanagedtype.interface)] out object ppunk);
  [return : marshalas(unmanagedtype.interface)]
  object filtercollection();
  [return : marshalas(unmanagedtype.interface)]
  object regfiltercollection();
  void stopwhenready();
  }
  
    若要防止 hresult 翻譯為 comexception,請在 c# 聲明中將 preservesig(true) 屬性附加到方法。
  • 網站運營seo文章大全
  • 提供全面的站長運營經驗及seo技術!
  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 孝义市| 镇江市| 高密市| 称多县| 延庆县| 凤凰县| 什邡市| 沧州市| 闽清县| 吴堡县| 商丘市| 阳高县| 文昌市| 丹江口市| 名山县| 湖北省| 稷山县| 崇仁县| 闵行区| 五原县| 广丰县| 苍梧县| 阿拉善右旗| 德兴市| 霍林郭勒市| 吉林省| 唐河县| 大名县| 九龙县| 广元市| 高碑店市| 绥宁县| 永州市| 缙云县| 怀仁县| 长春市| 织金县| 稻城县| 达拉特旗| 阿拉善右旗| 汉中市|