2010-11-25 3 views
0

Windows를 사용하려고하는데 SAP B1에서 ActiveX 컨트롤로 사용하고 있습니다. 해당 컨트롤 안에 WPF 컨트롤을 호스팅합니다. 그것은 내 수업에 모든 메서드를 사용할 수 있도록 내 수업에 activeX 개체를 캐스팅하려고 할 때를 제외하고 훌륭하게 작동합니다. 하지만 그렇게하려고하면 예외가 생깁니다. 뭐가 잘못 되었 니?ActiveX 개체를 내 개체로 캐스팅하는 데 문제가 있습니다.

나는 그 모든 등록을했다. 일부 수공예 데이터 (컨트롤 생성자로 초기화 됨)를 사용하여 SAP 내에서 해당 컨트롤을 표시 할 수도 있습니다. 비록 이것이 좀 더 일반적인 문제인지 SAP와 관련이 있는지 확신 할 수는 없지만.

미리 감사드립니다.

내가 가진 메시지는 다음과 같습니다 캐스트 할 수없는 타입 클래스 타입 '시스템 .__하여 ComObject' 'CapacityCalendarControl.CapacityCalendar'

[Guid("9A2F1CCB-8DC0-4CE5-B3C7-403A1A8CDCE2")] 
[ProgId("kamil.calendar.control")] 
[ClassInterface(ClassInterfaceType.AutoDual)] 
[ComVisible(true)] 
public partial class CapacityCalendar : UserControl 
{ 
    //internals... 
} 
+0

당신은 폭격 코드를 게시하지 않았다. –

답변

1

시스템 .__하여 ComObject (A COM 래퍼)의 COM 개체를 캐스팅 할 수 없습니다 .NET 클래스. 가장 쉬운 방법은 액티브 X에 .TLB (외부 또는 임베디드)가 장착되어 있다면 TLBImport (유형 라이브러리 가져 오기 도구)를 사용하는 것입니다.

더 여기를 참조하십시오 : Tool for creating .NET wrappers for a COM DLL?

+0

하지만 net assembly에서 activeX를 만들었으므로 Tlbimp에서 얻은 것 이상으로 net 어셈블리로 다시 변환 할 수는 없습니다. – kamilw

+0

TlbImp는 .NET 클래스가 아닌 .NET COM 개체 (= Active X)를 사용하도록 만듭니다. 나는 "내가 네트 어셈블리에서 내 ActivX를 만들었습니다"라는 진술을 이해하지 못합니까? –

관련 문제