デュアル インターフェイスとイベント
イベント インターフェイスをデュアルとして設計することは可能ですが、デュアルとして設計しない場合の設計上妥当な理由は多数あります。 基本的な理由としては、vtable を経由するか、Invoke
を経由するかのいずれかの場合にのみ、イベントのソースがイベントを発生させるからという理由があります。 イベント ソースがイベントを直接 vtable メソッド呼び出しとして発生させる場合、IDispatch
メソッドが使用されることは決してなく、インターフェイスが純粋な vtable インターフェイスであったことは明らかです。 イベント ソースがイベントを Invoke
への呼び出しとして発生させる場合、vtable メソッドが使用されることは決してなく、インターフェイスがディスパッチ インターフェイスであったことは明らかです。 イベント インターフェイスをデュアルとして定義する場合は、使用されないインターフェイスの一部をクライアントに実装する必要があります。
Note
この引数は、一般的に、デュアル インターフェイスには適用されません。 実装の観点から見ると、デュアルは、幅広いクライアントにアクセスできるインターフェイスを実装するための、迅速かつ便利で、十分にサポートされている方法です。
デュアル イベント インターフェイスを回避するには、さらに理由があります。Visual Basic も Internet Explorer もサポートしていません。