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

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:基于C#的接口基础教程之五
  第五节、实现接口   1、显式实现接口成员   为了实现接口,类可以定义显式接口成员执行体(Explicit interface member implementations)。显式接口成员执行体可以是一个方法、一个

  程序清单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 //此类不能再继承其它基类或接口
{
//这里不能有任何代码 ,系统自动增加一个缺省的构造函数
}
}
class MainClass
{
public static void Main(string[] args)
{
//命令行参数:
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;
// 调用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#的接口基础教程之四
  第四节、访问接口   对接口成员的访问   对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果底层成员的命名与继承而来的高层成员一致,那么底层成员将覆盖同

来源:模板无忧//所属分类:.Net教程/更新时间:2008-08-22
相关.Net教程