1

私はこれにまったく慣れておらず、msdnのチュートリアルに従っています:http://msdn.microsoft.com/en-us/library/aa645736(v = vs.71).aspx#vcwlkcominteroppart1cclienttutorialanchor2

私の質問は、なぜCOMインターフェイスとCOMCoClassesを使用するのかということです。COM CoClassのインスタンスをインスタンス化し、古いオブジェクトであるがCOMインターフェイスとしてキャストされた新しいオブジェクトをインスタンス化するのは奇妙に思えます。

私は本当にここでイデオロギーを把握したいだけです...どんな助けも役に立ちます。

4

2 に答える 2

3

理論は、インターフェース(オブジェクトが実行できること)を実装(それがどのように実行するか、より具体的には、それを実行するためにインスタンス化される特定のコード)から分離することです。

タイプをインターフェースとしてのみ定義することにより、COMは複数の言語にわたるオブジェクトがどのように相互運用するかを指定できます。これがその主な目標の1つです。インターフェイス仕様は、データを渡し、メソッドを呼び出す方法の契約であるため、クライアントが実装者(CoClass)の内部動作について知る必要なしに、どの言語でもCOMオブジェクトを公開できます。

これにより、VB6、.net、C ++、deplhi、およびその他の任意の数の言語を同じアプリケーション内で相互運用できます。

COMに関するウィキペディアの記事には、この点に関していくつかの良い背景があります。

于 2011-04-14T17:36:25.870 に答える
1

これはソフトウェアエンジニアリングの基本的な設計原則であり、インターフェイスは契約であり、comの世界では、coClassは実装です。COMの場合、インターフェイスはIDLで定義できますが、実装(coClass)はVB、C ++、.netなどで実行できます。

于 2011-04-14T17:36:59.507 に答える