如果我是您,我将使用聚合类型列表在父级中实现i list,但在i list.add上订阅子事件,在remove上取消订阅。类似这样的东西(对不起C语法)。
class Child
{
public event EventHandler MyEvent;
}
class Parent : IList<Child>
{
List<Child> _list;
// IList implementation
// ...
public void Add(Child item)
{
item.MyEvent += _ParentChildEventHandler;
_list.Add(item);
}
public void Remove(Child item)
{
item.MyEvent -= _ParentChildEventHandker;
_list.Remove(item);
}
void _ParentChildEventHandler(object sender, EventArgs e)
{
Child child = (Child)sender;
// write your event handling code here
}
}