1

というインターフェースがありますIFilterDataSourceAdapterIEnumrable<T>このインターフェイスは、着信データ ソース ( 、iCollectionViewまたはDataTableまたは)に適応するためのエンドポイントを公開し、DataViewそれらXmlDocumentを直感的にフィルタリングする機能を提供します。

  1. データソースからのフィールドの名前を受け入れます。
  2. FilterFields3 つのプロパティを公開するそれぞれのリストを生成します

    1. フィールドの名前
    2. Typeフィールドに基づいて演算子リストをフィルタリングします - 等しい、含む、より小さいなど。
    3. 指定された値フィールド。

    GUI は、このFilterFieldリストを使用してフィルター パネルを表示できます。

  3. ICommandアダプターは、GUI からフィルター呼び出しを実行するために独自のものを提供します。

だからthwアダプターでは、私は次のことをしたい

  1. 着信データソースが次のタイプの場合、フィルターが適用されたときにLinq 式IEnumrable<SomeClass>を生成し、クエリされたリストを公開します。AsQueryable() IEnumrable<SomeClass>
  2. 着信データソースが次のタイプの場合、デリゲートICollectionViewを作成Filterしてコレクション ビューを更新します。
  3. 入力データソースがタイプの場合、DataTableまたは文字列ベースのクエリDataViewを生成DataFilterし、データ テーブルまたはデータ ビューを更新します。
  4. 入力データソースがタイプの場合、フィルターされた式とリストXDocumentが生成されます。XPathXElements

上記のタイプのデータ ソースに制約されていることに基づいてこれを実行し、それに応じてコマンドの実行Genericsも区別したいと考えています。Filter

T がまたは またはまたはまたはIFilterDataSourceAdapter<T>のいずれかであることに基づいて、単一のインターフェイスをそのメンバー (フィールドと関数) に対して制約することはできますか?IEnurable<SomeClass>ICollectionViewDataTableDataViewXDocument

編集:

私の現在の実装は、実際にはデータソースの種類ごとに 5 種類の asbtract アダプターであり、正常に動作しています。それらはすべて実装しIFilterDataSourceAdapterます。IFilterDataSourceAdapter<T>しかし、各アダプター実装の設計に適しているよりも、制約を使用して作成できる可能性があると思います。だから、私が持っているものはすでに大丈夫かもしれません。

私は物事を考えすぎているかもしれません!!!

4

1 に答える 1

1

おそらく答えではありませんが、コメントするには長すぎます...あなたの質問に対する私の理解に基づいて、あなたが今持っているもの(データソースにそれぞれ固有の異なるインターフェースを持つ共通の基本インターフェース)は問題ないと思います。

私はあなたの質問のこの部分に特に言及しています:

T がまたは またはまたはまたは IFilterDataSourceAdapter<T>のいずれかであることに基づいて、単一のインターフェイスをそのメンバー (フィールドと関数) に対して制約することはできますか?IEnurable<SomeClass>ICollectionViewDataTableDataViewXDocument

「ジェネリック」インターフェイスが、ジェネリック パラメータ T の型に基づいて異なる実装を指定する必要がある場合、そのインターフェイスは実際にはジェネリックではありませんか?

ジェネリックを使用すると、さまざまな型に共通する動作を抽象化する必要があり、制約では、この共通の動作を定義しているさまざまな型のセットをより正確に定義できるようにする必要があります。

于 2012-10-18T09:33:14.083 に答える