18.2.4 C#中的客戶程序
程序清單18-6:
//ClIEntCs.cs using System; using DICTVC; using DICTCS; using DICTVB; class Test { public static void Main() { Console.Write("Input the language name of library to load:"); string language=Console.ReadLine(); //調用C#中的組件 DICTCS.DictionaryComponent CsDict=new DICTCS.DictionaryComponent(); Console.WriteLine("Dictionary from C# DictionaryComponent"); if(CsDict.LoadLibrary(language)==false){ Console.WriteLine("Library not found in C# DictionaryComponent!"); } else{ Console.WriteLine("Library load successfully in C# DictionaryComponent"); } //調用C++中的組件 DICTVC.DictionaryComponent VcDict=new DICTVC.DictionaryComponent(); Console.WriteLine("\nDictionary from C++ DictionaryComponent"); if(VcDict.LoadLibrary(language)==false){ Console.WriteLIne("Library not found in C++ DictionaryComponent!"); } else{ Console.WriteLine("Library Load successfully in C++ DictionaryComponent"); } //調用VB中的組件 DICTVB.DictionaryComponent VbDict=new DICTVB.DictionaryComponent(); Console.WriteLine("\n Dictionary from VB DictionaryComponent"); if(VbDict.LoadLibrary(language)==false){ Console.WriteLine("Library not found in VB DictionaryComponent!"); } else{ Console.WriteLine("Library load successfully in VB DictionaryComponent"); } //顯示各個字典中的語言信息 Console.WriteLine("The language of library in C# dictionary is:{0}",CsDict.CurrentLibrary); Console.WriteLine("The language of library in C++ dictionary is:{0}",VcDict.CurrentLibrary); Console.WriteLine("The language of library in VB dictionary is:{0}",VbDict.CurrentLibrary); //卸載字典語言庫 CsDict.FreeLibrary(); VcDict.FreeLibrary(); VbDict.FreeLibrary(); } }
在上面的例子中,我們引用了名字空間的全名,因為定義的各個組件名字均為DictionaryComponent。如果不使用名字空間的全名,對組件的使用將產生混淆。如果你在聲明組件時采用下面的語法,我們就不需要引入全名:
using VC DictionaryComponent=CompVC.DictionaryComponent;
using Cs DictionaryComponent=CompCs.Dictionarycomponent;
using VB DictionaryComponent=CompVB.DictionaryComponent;
事實上,如果我們在C++中調用C#或者VB編寫的組件,除了一些范圍的指定外,客戶程序的代碼基本上沒有什麼兩樣。
編譯該C#客戶程序也十分簡單,現在讓我們把應用程序的可執行文件同樣輸出到當前目錄的“..\Bin”子目錄,這只需要使用/reference編譯選項就可以了:
csc /reference:..\Bin\DICTCS.dll;..\Bin\DICTVB.dll;
..\Bin\DICTVC.dll/out:..\Bin\ClientCS.exe ClIEntCS.cs
下面讓我們檢驗一下程序的運行效果,在屏幕上鍵入ClIEnt.exe命令,並按提示輸入語言的名稱:
Input the language name of library to load:
如果我們輸入“English”,程序運行的結果將是:
Dictionary from C# DictionaryComponent
library load successfully in C# DictionaryComponent
Dictionary from VC DictionaryComponent
Library load successfully in VC DictionaryComponent
Dictionary from VB DictionaryComponent
Library load successfully in VB DictionaryComponent
The language of library in C# dictionary is:English
The language of library in VB dictionary is:English
The language of library in VB dictionary is:English
再運行一次程序,這一次我們輸入“Japanese”,程序運行的結果將是:
Dictionary from C# DictionaryComponent
Library not found in C# DictionaryComponent!
Dictionary from VC DictionaryComponent
Library not found in VC DictionaryComponent!
Dictionary from VB DictionaryComponent
Library load successfully in VB Dictionarycomponent
The language of library in C# is:
The language of library in VC is:
The language of library in VB is:Japanese