Создание класса, который возвращает 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-взаимодействия» в свойствах проекта, также необходимо подписать сборку и убедиться, что пользователь 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 не является.