2009-10-28 7 views
0

.NET 어셈블리에 COM 호출 가능 래퍼가 있습니다. 일부 메서드는 스트림 (System.IO.Stream)을 사용합니다. System.IO.Stream을 입력으로 사용하거나 System.IO.Stream을 반환합니다.ADODB.Stream과 System.IO.Stream 사이의 COM/.NET 경계를 넘어 Interop에 대한 가능성이 있습니까?

COM 환경 (클래식 ASP)에서 해당 메소드 중 하나를 호출하고 싶습니다.

ADODB.Stream을 사용하여 interop을 (를) 얻을 가능성이 있습니까? 다시 말해서, COM 래퍼에 대한 메서드를 호출하고 ADODB.Stream의 인스턴스 인 System.IO.Stream 대신 돌아가고 싶습니다.

자동으로 발생합니까?


그렇다면 .NET 코드를 구성 할 수 있습니까? 그렇다면 어떻게? 집안의 .NET 측에서 ADODB.Stream에서 CreateInstance를 호출하고 기존 System.IO.Stream을 래핑 한 다음 ADODB.Stream의 인스턴스를 COM 호출자에게 반환합니다. 이것이 가능한가? 작동할까요?

답변

2

두 가지 다른 개체입니다. 그것들은 같은 인터페이스를 가지고 있습니다,하지만 당신은 다른 것을 캐스팅 할 수 없습니다.

데이터를 복사하려면 해당 IStream 인터페이서 (버퍼에 읽은 다음 더 이상 데이터가 없을 때까지 다른 스트림에 쓰는)를 사용하여 다른 곳으로 읽은 코드를 쓸 수 있습니다. 또는 ADODB.Stream에 대한 호출을 전달하여 ADODB.Stream을 데이터 저장소로 사용하는 System.IO.Stream에서 클래스를 만들 수 있습니다.