0

Microsoft.Office.Interop.Visioライブラリでは、各エンティティ(Shapeなど)は、クラス(ShapeClass)およびインターフェイスShapeとして記述されています。

したがって、要素ごとに次のようになります。

interface Shape { ... }
class ShapeClass : Shape { ... }

interface Page { ... }
class PageClass : Page { ... }

...

なぜこのように設計されているのですか?

4

4 に答える 4

1

名前空間の「相互運用」部分は、これが実際にはCOMベースのAPIであることを示唆しています。

COMは、開発者向けの言語に依存しないコンポーネントモデルに対するMicrosoftの最初の試みであり、その中心的な信条の1つはインターフェイスベースの設計でした。

したがって、あなたの例でShapeClassは、「コクラス」と呼ばれ、Shapeインターフェースの名前付き実装です。

コクラスは(Win32レジストリに)グローバルに登録され、フレンドリ名( "prog-ID")または"CLSID"と呼ばれるGUIDに基づいて作成できます。

于 2009-07-31T15:09:08.193 に答える
0

それらはすべてCOMオブジェクトとして実装されており、クラス実装のコントラクトを定義するためのインターフェイスが存在するためだと思います。インターフェイスはIDLで実装されます。

wiki COM

于 2009-07-31T15:07:34.033 に答える
0

それがCOMの仕組みだからです。

COMは、コンポーネントが実装するインターフェイスを定義します。COMのほとんどすべてがインターフェイスに基づいています。インターフェイスは、それらを実装するクラスよりも重要です。

于 2009-07-31T15:08:08.493 に答える
0

これは、COMの動作方法に基づいています。

優れた.Netデザインの例を探している場合は、Office相互運用ライブラリ(PIA)を調べないでください。これらは、同等のCOMの直接ラッパーであり、C#での作業には適度にひどいものです。

Officeライブラリの操作を簡単にするには、VSTOPowerToolsを試してください。

于 2009-07-31T15:08:10.803 に答える