Есть ли возможность для Interop через границы COM / .NET между ADODB.Stream и System.IO.Stream? - PullRequest
0 голосов
/ 28 октября 2009

У меня есть COM-Callable Wrapper в сборке .NET. Некоторые методы используют потоки (System.IO.Stream): либо они принимают System.IO.Stream в качестве входных данных, либо возвращают System.IO.Stream.

Я бы хотел вызвать один из этих методов из среды COM - Classic ASP.

Есть ли возможность получить взаимодействие с помощью ADODB.Stream? Другими словами, я хотел бы вызвать метод в оболочке COM и получить вместо System.IO.Stream экземпляр ADODB.Stream.

Это происходит автоматически?


Если нет, то могу ли я создать код .NET так, чтобы он это делал? Если так, то как? Я представляю себе это: на стороне .NET дома, вызывая CreateInstance для ADODB.Stream, оборачивая его вокруг существующего System.IO.Stream и затем возвращая экземпляр ADODB.Stream вызывающему COM. Это возможно? Будет ли это работать?

1 Ответ

2 голосов
/ 28 октября 2009

Это два разных объекта. Конечно, они имеют один и тот же интерфейс, но вы не можете приводить их друг к другу.

Вы можете написать код, который читает из одного и затем записывает в другой, используя их интерфейс IStream (чтение в буфер, затем запись в другой поток, пока нет больше данных), если вы хотите скопировать данные. Или вы можете создать класс из System.IO.Stream, который использует ADODB.Stream в качестве хранилища данных, перенаправляя вызовы в ADODB.Stream.

...