4

マネージド コード C# で IDispatch インターフェイスを実装しています。ドキュメントを読むと (はい、これは悪い考えだとわかっています) InterfaceIsDual、 、InterfaceIsIDispatchまたはを使用できると書かれていInterfaceIsIUnknownます。インターフェイスを遅延バインディングにしたいので、..を選択しますが、同じはずのInterfaceIsDispatch読み取りショーがいくつかあります。InterfaceIsDualDual と Dispatch の選択に機能上の違いはありますか?

4

1 に答える 1

6

InterfaceIsDual は、アーリー バインディングとレイト バインディングの両方をサポートします。これは、COM クライアントにとって非常に望ましいものであり、事前バインディングの速度とオートコンプリートのサポートと、遅延バインディングの安全性のどちらかを選択できるようになります。

Microsoft docs で軽視される理由は、安全性の側面にあります。後で変更されたインターフェイスへの早期バインディングは、対応するインターフェイス [Guid] の変更なしで実行時エラーを診断するのが非常に困難です。アクセス違反から間違ったメソッドの呼び出しまで。COM のバージョン管理は重要であり、トラブルを回避するために従うべき厳格なルールは、苦痛を伴うため、スキップされることがよくあります。

于 2012-05-01T13:43:30.057 に答える