在COM组件中有个ADO.Recordset要传给.NET客户程序接口参数自然用IDispatch:
[id(2), helpstring("method ReadTaskList")] HRESULT ReadTaskList([in]BSTR sUser,[out, retval]IDispatch* rsList);
STDMETHODIMP CDataExchange::ReadTaskList(BSTR sUser, IDispatch *rsList)
{
   .
   .
   .
   pRs1->QueryInterface(IID_IDispatch,(void**)rsList);
   .
   .
   .
}//vc6
在.NET客户端(asp.net)改怎么弄才能把这个Recordset传给一个Dataset然后作为一个控件的数据源(Treeview)?
我的做法但是不对:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CORELib;
using ADODB;
using System.Runtime.InteropServices;
using System.Reflection;
namespace Test
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{

protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
CORELib.IDataExchange core = new CORELib.DataExchangeClass();
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
core.Database = "FlexFlow";
core.Password = "";
core.Server = "d2000";
core.User = "sa";
Recordset rs = (Recordset)core.ReadTaskList("cl");//这样有点牵强!但是不知道该怎么整.

} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}这样第一次运行会有“未将对象引用设置到对象的实例。”错误!在运行只有“配置”错误。
难道要用
IDispatch dsp = (IDispatch)core.ReadTaskList(“cl”);
rs.Attach(dsp);
这样有找不到IDispatch的namespace.
到底该怎么整,达人指点!