基于C#的接口基礎(chǔ)教程之六(3)_.Net教程
推薦:基于C#的接口基礎(chǔ)教程之五 第五節(jié)、實(shí)現(xiàn)接口 1、顯式實(shí)現(xiàn)接口成員 為了實(shí)現(xiàn)接口,類可以定義顯式接口成員執(zhí)行體(Explicit interface member implementations)。顯式接口成員執(zhí)行體可以是一個(gè)方法、一個(gè)
程序清單2 DemonCOM.cs
using System;
using System.Runtime.InteropServices;
namespace QuartzTypeLib
{
//聲明一個(gè)COM接口 IMediaControl,此接口來(lái)源于媒體播放機(jī)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();
}
//聲明一個(gè)COM類:
[ComImport, Guid("E436EBB3-524F-11CE-9F53-0020AF0BA770")]
class FilgraphManager //此類不能再繼承其它基類或接口
{
//這里不能有任何代碼 ,系統(tǒng)自動(dòng)增加一個(gè)缺省的構(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的實(shí)類對(duì)象:
QuartzTypeLib.FilgraphManager graphManager =new QuartzTypeLib.FilgraphManager();
//聲明IMediaControl的實(shí)類對(duì)象::
QuartzTypeLib.IMediaControl mc =(QuartzTypeLib.IMediaControl)graphManager;
// 調(diào)用COM的方法:
mc.RenderFile(filename);
//運(yùn)行文件.
mc.Run();
//暫借停.
Console.WriteLine("Press Enter to continue.");
Console.ReadLine();
}
private static void DisplayUsage()
{ // 顯示
Console.WriteLine("媒體播放機(jī): 播放 AVI 文件.");
Console.WriteLine("使用方法: VIDEOPLAYER.EXE 文件名");
}
}
運(yùn)行示例:
若要顯示影片示例 Clock.avi,請(qǐng)使用以下命令:
interop2 %windir%\clock.avi
這將在屏幕上顯示影片,直到按 ENTER 鍵停止。
分享:基于C#的接口基礎(chǔ)教程之四 第四節(jié)、訪問(wèn)接口 對(duì)接口成員的訪問(wèn) 對(duì)接口方法的調(diào)用和采用索引指示器訪問(wèn)的規(guī)則與類中的情況也是相同的。如果底層成員的命名與繼承而來(lái)的高層成員一致,那么底層成員將覆蓋同
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- asp.net網(wǎng)站RSS功能實(shí)例代碼
- 復(fù)雜ASP.NET服務(wù)器控件調(diào)整小技巧
- ASP.NET 2.0中構(gòu)造個(gè)性化網(wǎng)頁(yè)
- 捕捉WPF應(yīng)用程序中XAML代碼解析異常
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- VB.NET 中刪除DataGridView中所選行的小例子
- 10個(gè)ASP.NET編程技巧
- 關(guān)于.NET/C#/WCF/WPF 打造IP網(wǎng)絡(luò)智能視頻監(jiān)控系統(tǒng)的介紹
- 看看一個(gè).net版對(duì)話框控件
- ASP.NET中實(shí)現(xiàn)模板頁(yè)
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-基于C#的接口基礎(chǔ)教程之六(3)
。