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

发布于 2024-08-08 23:12:38 字数 448 浏览 5 评论 0原文

我在 .NET 程序集上有一个 COM 可调用包装器。某些方法使用流 (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 调用者。这可能吗?它会起作用吗?

I have a COM-Callable Wrapper on a .NET assembly. Some of the methods use streams (System.IO.Stream): either they accept a System.IO.Stream as input, or they return a System.IO.Stream .

I'd like to call one of those methods from a COM environment - Classic ASP.

Is there any possibility to get interop using ADODB.Stream? In other words, I'd like to invoke a method on the COM wrapper and get back, instead of a System.IO.Stream , an instance of ADODB.Stream.

Does this happen automatically?


If not, then can I construct the .NET code so that it does? If so, how?
I imagine doing this: on the .NET side of the house, calling CreateInstance on an ADODB.Stream, wrapping it around the existing System.IO.Stream and then returning the instance of the ADODB.Stream to the COM caller. Is this possible? Will it work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最终幸福 2024-08-15 23:12:38

它们是两个不同的对象。当然,它们具有相同的界面,但您不能将一个转换为另一个。

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

They are two different objects. They have the same interface, sure, but you can not cast one to another.

You can write code that read from one and then write to another using their IStream interfacer (read to buffer then write to the other stream until there's no more data), if you want to copy the data. Or you can create a class from System.IO.Stream that uses a ADODB.Stream as the data store by forwarding calls to ADODB.Stream.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文