3

IEditableCollectionView addNew() メソッドを使用してオブジェクトを追加するのはかなりまともです。ただし、私が持っている汎用コードでどれだけうまく機能するかはわかりません。

基本クラスの ObservableCollection があります。ユーザーが見たいものに応じて、DerivedA または DerivedB (または複数の他の派生型クラス) で埋めることができます。1 つ以上のタイプを持つことはありません。これについて次の質問があります。番号 1 が主な質問です。

1) addNew() メソッドが呼び出されたときに追加されるオブジェクトのタイプ。私はベースを推測していますが、確かではありません。Base が抽象の場合はどうなりますか? とにかく、特定のタイプを追加することを確認できますか、それとも最も関連性の高いタイプをすでに追加するように実装されていますか?

2) 派生クラスを使用するときに ObservableCollection を使用する際に問題が発生することを求めていますか?

3) 派生クラスはすべて IEditableObject を個別に実装しますが、Base は実装しません。実装するときにメソッドを定義する必要があると思ったので、私の愚かさのせいです。それらを抽象として定義し、派生クラスでそれらをオーバーライドできますか? これを行わないと、IEditableCollection で問題が発生します。

アップデート:

項目 3 を正常に修正しました) 基本クラスは iEditableObject を実装し、抽象仮想メソッドをその派生クラスにスローします。リストが派生アイテムで満たされていても、addNew メソッドは機能しません。

私は1つの半解決策を見てきました。.Net Framework 4.0 は、追加する項目を定義できる AddNewItem という新しいメソッドを実装しています。パラメーターのないコンストラクターと基本クラスの問題を解決する必要があります。しかし、私は3.5で働いています

私にできることはありますか?

4

1 に答える 1

1

この種の問題については、.net フレームワーク コードはブラック ボックスではないことを覚えておくと便利です。 ILSpyを使用して逆アセンブルし、実行内容や Microsoft がどのように動作するようになったかを確認できます。4.0 メソッドを見て、3.5 で独自の目的のために複製できないかどうかを確認し、それを拡張メソッドとして追加することをお勧めします。

于 2011-11-06T20:38:05.320 に答える