基于C#的接口基礎教程之六(4)_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

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

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

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

        DllImport 屬性定義如下:

      namespace System.Runtime.InteropServices
      {
       [AttributeUsage(AttributeTargets.Method)]
       public class DllImportAttribute: System.Attribute
       {
        public DllImportAttribute(string dllName) {...}
        public CallingConvention CallingConvention;
        public CharSet CharSet;
        public string EntryPoint;
        public bool ExactSpelling;
        public bool PreserveSig;
        public bool SetLastError;
        public string Value { get {...} }
       }
      }

        說明:

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

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

        3、DllImport具有五個命名參數:

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

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

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

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

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

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

        4、它是一次性屬性類。

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

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

      using System;
      using System.Runtime.InteropServices;
      class MainApp
      { //通過DllImport引用user32.dll類。MessageBox來自于user32.dll類
       [DllImport("user32.dll", EntryPoint="MessageBox")]
       public static extern int MessageBox(int hWnd, String strMessage, String strCaption, uint uiType);
       public static void Main()
       {
        MessageBox( 0, "您好,這是 PInvoke!", ".NET", 0 );
       }
      }

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

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

      共4頁上一頁1234下一頁
      來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
      相關.Net教程