何かが追加、挿入、または削除されるたびにイベントを発生させるリストを継承するクラスEventListを作成しました。
public class EventList<T> : List<T>
{
public event ListChangedEventDelegate ListChanged;
public delegate void ListChangedEventDelegate();
public new void Add(T item)
{
base.Add(item);
if (ListChanged != null
&& ListChanged.GetInvocationList().Any())
{
ListChanged();
}
}
...
}
現時点では、次のようなプロパティとして使用しています。
public EventList List
{
get { return m_List; }
set
{
m_List.ListChanged -= List_ListChanged;
m_List = value;
m_List.ListChanged += List_ListChanged;
List_ListChanged();
}
}
今私の問題は、新しいオブジェクトが参照された場合、またはそれを防ぐことができるので、セッターでイベントの配線を行う必要がないということです。
もちろん、プロパティを「プライベートセット」に変更することもできますが、クラスを変数としても使用できるようにしたいと思います。