관리되지 않는 C++에서 관리되는 대리자를 호출해야하는 취미 프로젝트에서 작업하고 있습니다. 외부 제약 때문에 런타임시 관리 코드에서 관리되지 않는 코드로 대리자를 전달해야합니다.COM interop을 사용하여 관리되지 않는 코드에서 관리되는 대리자를 호출하는 중
이상적으로, 내가 원하는 것은 단순히 C#에서 (대리 호출을 메서드 호출과 동일한 구문을 사용하여 호출하는 것처럼) 대리자를 호출하는 것이지만 비 관리 코드에서 호출하는 것입니다. 나는 이것을 할 수있는 방법이나 그것이 가능할지라도 알 수 없다.
이렇게 할 수 있습니까? 그렇다면 어떻게해야합니까? 이벤트를 사용하고 비 관리 코드에서 이벤트를 발생시켜야합니까?
이것은 내가하고 싶은 것입니다. 관리 측면에서
(이 C를 관리 ++)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void CallbackMethod();
[ComVisibleAttribute (true)]
[InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIUnknown)]
[GuidAttribute("CD305837-98FC-4433-A195-BD50C6C16369")]
public interface class ICallback
{
void QueueCallback(CallbackMethod^ callBack);
};
그리고, ICallback 인터페이스를 구현하는 관리되지 않는 클래스 :
HRESULT CIoComplectionPort::QueueCallback(_CallbackMethod * callBack)
{
// How is the callBack method invoked here?
}