創建返回一個DataSet類也不是那麼困難:
using System;
using System.Data;
using System.Runtime.InteropServices;
namespace COMTest
{
[Guid("AC4C4347-27EA-4735-B9F2-CF672B4CBB4A")]
[ComVisible(true)]
public interface ICOMTest
{
[ComVisible(true)]
DataSet GetDataSet();
}
[Guid("CB733AB1-9DFC-437d-A769-203DD7282A8C")]
[ProgId("COMTest.COMTest")]
[ComVisible(true)]
public class COMTest : ICOMTest
{
public DataSet GetDataSet()
{
DataSet ds = new DataSet("COMTest");
return ds;
}
}
}
你需要檢查「註冊爲COM Interop」框在項目屬性,您還需要簽署大會,並且您需要確保IIS用戶可以訪問您的bin\Debug
目錄。
一旦你做到了這一點,你可以從ASP就好創建一個實例:
<%
Dim o
Set o = Server.CreateObject("COMTest.COMTest")
Response.Write("Server.CreateObject worked.")
Response.Write("<br/>")
Dim ds
Set ds = o.GetDataSet()
If Not ds is Nothing Then
Response.Write("o.GetDataSet returned an object. Can we use it?")
Response.Write("<br/>")
Response.Write("We have a DataSet, and its DataSetName is: ")
Response.Write(ds.DataSetName)
End If
%>
在這裏,你會難過。對於雖然返回DataSet的方法對COM可見,但DataSet的屬性或方法都不是。
我的默認構造函數可以有嗎?例如,我希望他們篡改將在wse安全頭中使用的用戶名和密碼,然後調用相應的函數來獲取他們所需的響應。 – silverbugg 2008-11-14 23:49:59
沒有。添加一個'init'方法來提供用戶和pwd給你的班級。 – gbjbaanb 2008-11-15 01:22:09
我的所有領域都必須是公開的,還是可以通過公共屬性公開我的領域以保持適當的數據隱藏? – silverbugg 2008-11-17 19:03:24