C# 네이티브 코드에 대한 후기 바인딩 구현
-
16-09-2019 - |
문제
우리는 기존의 기본 응용 프로그램 (대부분 VB로 작성된)과 협력하여 어셈블리를로드하고 "늦은 바인딩"으로 방법을 호출하고 있습니다. 소스 코드에 액세스 할 수 없습니다.
우리는 이 인터페이스를 C#으로 구현하고 네이티브 애플리케이션이 C# 어셈블리를 호출하도록 하려고 합니다.
이게 가능한 일인가요?
이것이 작동하도록 하기 위해 메소드 이름과 메소드 서명을 일치시키는 것 외에 우리가 해야 할 일이 있습니까?
해결책 2
이를 작동시키는 데 필요한 단계는 다음과 같습니다.
- 클래스를 [ComVisible(true)]로 표시하고 고유한 [Guid] 속성을 지정하세요.
- ProgId를 일반적으로 MyNamespace.MyClass인 클래스와 일치시키세요. 하지만 클래스에 속성을 추가하여 이를 재정의할 수도 있습니다.
- 호출될 각 메소드에 대해 적절한 [DispId] 속성을 배치하십시오.
- 어셈블리를 컴파일하고 어셈블리에서 regasm.exe를 실행하세요.
그리고 짜잔!네이티브 코드는 "후기 바인딩"을 통해 C#을 호출할 수 있습니다.물론 내 기본 응용 프로그램이 내 어셈블리를 로드하는 방법을 알 수 있도록 여러 개의 레지스트리 키를 설정해야 했지만 모두 작동합니다.
다른 팁
VB6에서 .NET 코드를 호출하려는 경우 가장 깔끔한 방법은 C# 코드를 VB6 코드에 대한 COM 개체로 표시하는 것입니다. 따라서 C# 코드를 다음과 같이 표시해야 합니다. ComVisible
기존 COM 인터페이스처럼 보이는지 확인하세요.
업데이트: 여기시작하는 데 도움이 되는 기사입니다.
제휴하지 않습니다 StackOverflow