跨ADODB.Stream和System.IO.Stream之间的COM / .NET边界是否有可能进行Interop?

时间:2009-10-28 00:54:01

标签: .net com interop stream adodb

我在.NET程序集上有一个COM-Callable Wrapper。一些方法使用流(System.IO.Stream):要么接受System.IO.Stream作为输入,要么返回System.IO.Stream。

我想从COM环境中调用其中一种方法 - 经典ASP。

是否有可能使用ADODB.Stream进行互操作?换句话说,我想在COM包装器上调用一个方法,然后返回一个ADODB.Stream的实例而不是System.IO.Stream。

这会自动发生吗?


如果没有,那么我可以构建.NET代码吗?如果是这样,怎么样? 我想这样做:在房子的.NET端,在ADODB.Stream上调用CreateInstance,将其包装在现有的System.IO.Stream周围,然后将ADODB.Stream的实例返回给COM调用者。这可能吗?它会起作用吗?

1 个答案:

答案 0 :(得分:2)

它们是两个不同的对象。当然,它们具有相同的界面,但你不能将它们拼凑到另一个界面。

如果要复制数据,可以编写从一个读取的代码,然后使用它们的IStream接口读取另一个流(读取缓冲区然后写入另一个流,直到没有其他数据)。或者,您可以通过将调用转发到ADODB.Stream,从System.IO.Stream创建一个使用ADODB.Stream作为数据存储的类。