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

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

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

        程序清單2 DemonCOM.cs

      using System;
      using System.Runtime.InteropServices;
      namespace QuartzTypeLib
      {
      //聲明一個COM接口 IMediaControl,此接口來源于媒體播放機COM類
      [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();
      }
      //聲明一個COM類:
      [ComImport, Guid("E436EBB3-524F-11CE-9F53-0020AF0BA770")]
      class FilgraphManager //此類不能再繼承其它基類或接口
      {
      //這里不能有任何代碼 ,系統(tǒng)自動增加一個缺省的構(gòu)造函數(shù)
      }
      }
      class MainClass
      {
      public static void Main(string[] args)
      {
      //命令行參數(shù):
      if (args.Length != 1)
      {
      DisplayUsage();
      return;
      }
      String filename = args[0];
      if (filename.Equals("/?"))
      {
      DisplayUsage();
      return;
      }
      // 聲明FilgraphManager的實類對象:
      QuartzTypeLib.FilgraphManager graphManager =new QuartzTypeLib.FilgraphManager();
      //聲明IMediaControl的實類對象::
      QuartzTypeLib.IMediaControl mc =(QuartzTypeLib.IMediaControl)graphManager;
      // 調(diào)用COM的方法:
      mc.RenderFile(filename);
      //運行文件.
      mc.Run();
      //暫借停.
      Console.WriteLine("Press Enter to continue.");
      Console.ReadLine();
      }
      private static void DisplayUsage()
      { // 顯示
      Console.WriteLine("媒體播放機: 播放 AVI 文件.");
      Console.WriteLine("使用方法: VIDEOPLAYER.EXE 文件名");
      }
      }

        運行示例:

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

      interop2 %windir%\clock.avi

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

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

      來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
      相關.Net教程