C#實現(xiàn).net組件和COM組件的互操作
[DllImport("kernel32.dll")]這叫引入kernel32.dll這個動態(tài)連接庫。這個動態(tài)連接庫里面包含了很多WindowsAPI函數(shù),如果你想使用這面的函數(shù),就需要這么引入。舉個例子:[DllImport("kernel32.dll")]private static extern void 函數(shù)名(參數(shù),[參數(shù)]);函數(shù)名就是一個屬于kernel32.dll里的一個函數(shù)。完了你就可以用那個函數(shù)了。.NET組件中使用目前存在的COM組件
對于.NET來講,使用COM組件就要簡單一些。..NET提供了大量的類庫來方便的實現(xiàn)同COM的相互操作,其中很重要的一個名稱空間就是:System.Runtime.InteropServices。通過這個名稱空間的名字我們也可以從字面上看出,"互操作服務(wù)"。System.Runtime.InteropServices這個名稱空間提供了一系列的類來對COM對象進行操作。下面的例子中,我們來調(diào)用一下系統(tǒng)自帶的Win32函數(shù)MessageBoxA, 這個函數(shù)位于系統(tǒng)的COM組件user32.dll當(dāng)中,我們調(diào)用的代碼如下:
using System;
using System.Runtime.InteropServices;class Test
{
[DllImport ("user32.dll")]
public static extern int MessageBoxA( int hWnd,string strMsg,string strCaption, int nType);public static void Main()
{
int myMsg;
myMsg =MessageBoxA(0,"Hello!" ,"test",0);
}
}
切換到命令行,運行:
C:\>csc Test.cs
編譯完畢我們的C#應(yīng)用程序之后,直接運行就可以看到對話框了!同樣的,也可以使用這種方法來調(diào)用我們自己使用VB/VC編寫的COM組件。需要注意的是,在調(diào)用COM組件之前,我們需要在.NET程序中引用名稱空間:System.Runtime.InteropServices 。因為我們需要使用這個名稱空間所提供的一個方法:DllImport。
[ParseChildren(true)] 它是用來告訴解析器 頁面聲明語法中位于指定標(biāo)簽內(nèi)的內(nèi)容(子標(biāo)簽)是否是看作該控件的屬性還是當(dāng)作一個子控件的標(biāo)簽。true 這里true 是當(dāng)作子標(biāo)簽的意思。ToolBoxData 的意思是當(dāng)你將這個控件從tool box 中拖放到WEBFORM中時在aspx文件的 HTML代碼中添加的對該控件的定義。這里的控件是 : kj_gridview{0}是控件的標(biāo)記的前綴就是你托這個控件到頁面上 時候他就自動添加<{0}:Div runat=server></{0}:Div>這個{0}是你定義的
1、[StandardParameter(“ProcessID“)]
2、[System.Web.Services.WebMethod(EnableSession=true)]
3、[Guid(“D301882E-46D1-4e83-BF15-67028B94A68D“)]
4、[Category(“Drp“)]
5、[DBDefineAttribute(“Banks.XML“)]
[Serializable]
6、[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
這些是類或方法的屬性
這個在大型的軟件開發(fā)中是很有用的,如項目中要用到的一個模塊是通用的,我們就可以將其單獨抽出來做成控件,這個時候類或是方法的屬性就有用了
加上這些后使控件類在使用的時候就會有相應(yīng)的列項提示等等
int[][] myarray3 = new int [2][]
前面的2代表二維的第一維是2 即兩行 最后一個中括號代表此二位數(shù)組的列數(shù)還未指定
請參見