2

私はそのようなリストプロパティを持っています

protected IList<System.Windows.Media.Color> colors;    
public IList<System.Windows.Media.Color> Colors
{
     get { return colors; }
     set { colors = value; }
}

そして私には機能があります

protected void updateBuffers()

これは、プロパティ ユーザーがプロパティを変更するたびに呼び出す必要があります。たとえば、

Colors.Add(...)
...
Colors.Clear(...)

それを行うためのエレガントで簡単な方法はありますか?

4

2 に答える 2

4

リストを基本クラスとして使用して、追加のプロパティを作成する新しいオブジェクトを作成できます。

public class CustomList<T> : List<T>
{
    public new void Add(T item) {
        base.Add(item);
        this.UpdateBuffers();
    }
}

virtual基本クラスとしてマークされていない Add の既存の実装を完全に上書きするには、「new」キーワードが必要です。

コメントでフィードバックをくれた Hans Passant と LarsTech に感謝します。

于 2013-07-12T11:51:30.803 に答える