문제

COM 개체 방법을 호출하는 가장 깨끗하고 빠른 방법을 찾으려고 노력하고 있습니다.

나는 객체에 RCW를 사용하고 있었지만 새 버전의 타사 COM 객체가 GUID 변경이 나올 때마다 RCW를 쓸모 없게 만들었으므로 변경하고 사용을 시작해야했습니다.

Type mytype = Type.GetTypeFromProgID("MyCOMApp.Application"); 

새로운 버전의 COM 객체가 나올 때마다 내 앱을 다시 완화하고 재배치 할 필요가 없습니다.

현재 나는 선거를 사용하고 있습니다 mytype.InvokeMemeber 그러나 나는 RCW를 호출하는 것보다 너무 느리다고 생각합니다.

다른 사람들은 어떻게 제 3 자 COM 객체 버전을 변경하는 문제를 어떻게 해결하지만 여전히 RCW의 속도를 유지하고 있습니까?

도움이 되었습니까?

해결책

반사의 호출을 더 쉽게 만들려면 vb.net을 사용하고 객체로 입력 한 변수에서 늦게 전화를 걸 수 있습니다. vb.net은 반사 호출에 도움이됩니다. 또한 Microsoft.visualBasic.dll에 대한 참조를 설정하고 CallbyName을 호출하여 반사 통화를 돕습니다.

그러나 IID (Interface Guid) 또는 클래스 GUID가 변경 되는가? 클래스 가이드가 변경되는 경우 인터페이스를 한 번 정의한 다음 getTypefromProgid로 호출을 통해 유형을 가져올 수 있습니다. 일단 있으면 유형을 활성화기 클래스의 CreateInstance 메소드로 전달한 다음 변경되지 않으면 인터페이스로 캐스트 할 수 있습니다.

그러나 IID가 변경되면 매번 반사를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top