1

ビジネス アプリケーションを Microsoft Word に統合するために設計された VSTO 4.0 アドインを開発しました。メイキング アドインで記述されたコードは、Microsoft PowerPoint の新しいアドインに再利用したいミニ フレームワークです。主な問題は、Word と PowerPoint のインターフェイス (たとえば、Microsoft.Office.Interop.Word.Table と Microsoft.Office.Interop.PowerPoint.Table) に共通の祖先がないことですが、そのための一般的な API を作成する必要があります。挿入、更新、表やグラフなど。これらは、Word および PowerPoint オブジェクトを操作するために標準化されます。どの設計原則/パターンを選択すればよいですか? 私が使用するクラスの例を以下に示します。

 using Word = Microsoft.Office.Interop.Word;

 public class ReportHolder
 {
     public ReportHolder(Word.Document document) { ... }

     public void AddTable(Word.Range range) { ... }
 }
4

2 に答える 2

3

Adapterパターンを探しているようです。

もう 1 つのアプローチは、独自のクラス セットを介して、抽象的かつ一般的な方法でフレームワークが行うことを処理することです。次に、コンテンツをレンダリングするための 2 つの異なる戦略 (Word 用と PowerPoint 用の 2 つの別個のレンダラー) を用意します。

于 2013-03-12T17:40:29.927 に答える
1

十分な一般化を実装するために必要なアプリケーション階層のレベルで共通のインターフェースを見つけることができない場合は、少なくとも 2 つ、おそらくそれ以上のオプションから選択できます。

最初のオプションは、戦略パターンを実装し、戦略の独自のインターフェースを定義することです。これを行うと、戦略のインターフェイスの定義にコードを記述し、各戦略クラス内でワード、エクセル、パワーポイントなどのタイプ固有のロジックをコーディングできます。すべての戦略クラスを配置したら、ファクトリ パターンを実装できます。あなたが求めているコードの再利用を得るために。

2 番目のオプションは、インターフェイスや型オブジェクト参照などの関数の引数に、より一般的な型オブジェクトを使用することです。これを行うと、.net フレームワークのリフレクション クラスを利用して、特定のオブジェクトの型チェックを行い、特定のケースごとに処理できます。

最後に、これらの代替案やその他のものを見る前に、msdn のドキュメントを掘り下げて、.net の Office 相互運用性フレームワークの全体的なアーキテクチャを理解し、作成できる有効な一般化と、コードに適用されている既存のパターンがあるかどうかを確認することをお勧めします。再利用。また、この目的のためにフレームワーク全体でレイト バインディングが広く使用されていることも知っています。ここに追加の参考資料があります。

Office ソリューションでの遅延バインディング

Office ソリューションでのコードの記述

楽しみ!

于 2013-03-12T17:51:35.823 に答える