이중 인터페이스 및 이벤트
이벤트 인터페이스를 이중으로 디자인할 수 있지만 그렇게 하지 않는 데는 여러 가지 좋은 디자인 이유가 있습니다. 근본적인 이유는 이벤트의 원본이 vtable을 통해서만 또는 둘 다 아닌 이벤트를 통해 Invoke
서만 발생하기 때문입니다. 이벤트 원본이 직접 vtable 메서드 호출 IDispatch
로 이벤트를 발생시키는 경우 메서드는 사용되지 않으며 인터페이스가 순수 vtable 인터페이스여야 한다는 것이 분명합니다. 이벤트 원본이 이벤트를 호출 Invoke
로 발생시키는 경우 vtable 메서드는 사용되지 않으며 인터페이스가 dispinterface여야 한다는 것이 분명합니다. 이벤트 인터페이스를 이중으로 정의하는 경우 클라이언트가 사용되지 않는 인터페이스의 일부를 구현하도록 요구하게 됩니다.
참고 항목
이 인수는 일반적으로 이중 인터페이스에는 적용되지 않습니다. 구현 관점에서 이중은 광범위한 클라이언트에서 액세스할 수 있는 인터페이스를 구현하는 빠르고 편리하며 잘 지원되는 방법입니다.
이중 이벤트 인터페이스를 피해야 하는 추가 이유가 있습니다. Visual Basic과 Internet Explorer 모두 지원되지 않습니다.