2009-05-08 2 views
4

PB 객체 과 .NET (C#) 객체간에 양방향 통신을 수행하는 방법을 찾고 있습니다. 브래드의 .NET 버전 인 GUI 컨트롤을 보면 .NET 객체에 PB 객체에 대한 참조를 제공하는 방법을 볼 수 있습니다. 그러나이 예제에서는 PowerObject (기본적으로)로 캐스팅되었습니다. C# 코드는 PB 개체의 TriggerEvent() 만 호출합니다.PowerBuilder에서 .NET interop

foo1이라는 C#에서 사용자 지정 클래스를 만들고 싶습니다. foo1에 bar1()이라는 메서드를 만들고 싶습니다.

foo2라는 PB에서 사용자 정의 클래스를 만들고 싶습니다. bar2()라는 foo2에 메서드를 만들고 싶습니다.

foo2에서 foo1의 인스턴스를 만들 수 있기를 원합니다. 에서 foo2.bar1()을 foo2 내에서 호출 할 수 있습니다.

은 (내가 여기까지 잘 해요.)

내가 foo1은 내에서에서는 foo2를 참조 할 수 있어야합니다. 은 foo1에서 foo2.bar2()를 호출 할 수 있기를 원합니다.

+0

당신의 PB 버전은 무엇을 호출/P를보고 할 수 있습니다? –

답변

0

이 작업을 수행하는 데 좀 더 정교한 방법이있을 것이라고 확신하지만 COM을 사용하는 것이 가장 쉽습니다.

  • Using COM in PowerBuilder
  • Using COM in .NET
  • 어떤 사람들은 COM 정답 결코 말할 것입니다,하지만 난 바로 작업에 적합한 도구를 사용하여 말을

      .

    0

    PowerBuilder (버전 6, 7 및 8.0)는 다른 기술로 작성된 객체를 연결하려는 경우 BINARY 계약 만 제대로 이해합니다. 실제로는 IDispatch 인터페이스 (소위 OleAutomation)가있는 COM 개체를 의미합니다. VB6이나 jscript (wscript 포함)와 같은 인터프리터 언어에서 사용할 수있는 것과 같은 종류의 객체입니다.

    개체간에 비동기 통신을하려면 ConnectionPoint를 처리 할 필요가 없습니다. 자신의 일반 인터페이스를 사용하십시오.

    "프록시 개체"를 빌드 할 때 Watcom C++ 컴파일러를 사용하지 마십시오. 몇 년 전에 매우 약한 컴파일러였습니다. 컴파일을 시도하고 일부 솔루션을 빌드하고 컴파일하는 동안 많은 내부 오류가 발생했습니다. MS C++ 컴파일러는 문제없이 컴파일 작업을 수행했습니다.

    개체는 아파트와 호환되어야합니다. PB는 STA (Single Threaded Apartment) 만 사용합니다. 그것을 확인하십시오 - 어쩌면 뭔가가 최근에 변경되었습니다.