Interop跨ADODB.Stream和System.IO.Stream之间的COM/.NET边界是否有可能?
问题描述:
我在.NET程序集上有一个COM-Callable Wrapper。一些方法使用流(System.IO.Stream):它们接受一个System.IO.Stream作为输入,或者它们返回一个System.IO.Stream。Interop跨ADODB.Stream和System.IO.Stream之间的COM/.NET边界是否有可能?
我想从COM环境中调用其中一种方法 - 经典ASP。
有没有可能使用ADODB.Stream获取互操作?换句话说,我想调用COM包装器上的方法并取回,而不是System.IO.Stream,ADODB.Stream的一个实例。
这是否会自动发生?
如果不是,那我可以构造.NET代码吗?如果是这样,怎么样? 我想这样做:在房子的.NET一侧,在ADODB.Stream上调用CreateInstance,将其包装到现有的System.IO.Stream中,然后将ADODB.Stream的实例返回给COM调用方。这可能吗?它会起作用吗?
答
它们是两个不同的对象。当然,他们有相同的界面,但是你不能投一个到另一个。
您可以编写从其中读取数据的代码,然后使用它们的IStream接口将数据写入另一个代码(读取缓冲区,然后写入其他数据流,直到没有更多数据),如果要复制数据。或者你可以从System.IO.Stream中创建一个类,它通过将调用转发给ADODB.Stream来使用ADODB.Stream作为数据存储。