1

彼ら、

アドバイスが必要です...グリッドビューに「新しいアイテムを追加」を実装し、Add(IEnumerable newItems)のように同じグリッドから「選択したアイテムを削除」したいと思います。

グリッドとの強い関係のない柔軟なソリューションを探しているので、派生グリッドビュークラスを実装したくありません。

私の場合、「デコレータ」パターンの使用を調査していましたが、設計できませんでした。デコレータはグリッドビューを含む/集約できますが(問題ありません)、デコレータとグリッドビューには共通のインターフェイスがありません。つまり、「新しいアイテムを追加する」 'は新機能であり、グリッドビューにはありません。グリッドビューに空の「Add」メソッドを実装し、それをデコレータでラップすることができます(別の方法として)。

とにかく、私は素敵なソリューションを設計するためのアイデアを喜んでいます:)

4

2 に答える 2

1

ビジターパターンはあなたの問題にぴったりのようです。

これは、オブジェクト構造の要素に対して実行される操作を表します。ビジターを使用すると、操作する要素のクラスを変更せずに、新しい操作を定義できます。

于 2012-07-24T19:40:57.450 に答える
0

最も簡単な方法は拡張メソッドだと思います。

public static class GridViewExtensions
{
   public static void RemoveSelectedItems(this GridView grid)
   {
      // implementation goes here
   }

   public static void Add<T>(this GridView grid, IEnumerable<T> items)
   {
      // implementation goes here
   }
}

装飾されたGridViewよりもさらに簡単に使用できます。デコレータを作成する必要はありません。通常のGridViewを使用するだけです。

gridView.RemoveSelectedItems();

デコレータを使用すると、装飾されたオブジェクトのすべてのパブリックインターフェイスを実装し、それに呼び出しを転送する必要があります。これはGridViewにとって多くの作業です。

更新:別の解決策-GridViewから継承し、派生クラスにメソッドを追加するだけです。GridViewの代わりにCustomGridViewを使用してください。

于 2012-07-23T17:08:39.297 に答える