Я все еще изучаю, как использовать События в C #, поэтому я придумаю, что должно быть довольно простым практическим примером. У меня есть объект, который читает из базы данных в список. Когда элемент в базе данных удаляется, запускается событие. Как заставить объект DBWrapper прослушивать событие, инициированное другим классом?
public class DBWrapper
{
private List<DBStruct> _List;
public List<DBStruct> GetList
{
get
{
return _List;
}
}
void OnDeleted(object sender, EventArgs e)
{
//Re-read the list from db. I could probably do
//something with Lazy<T> loading to eliminate the event stuff
//but that's not the point.
_List = (from d in db select d).ToList();
}
}
Затем у меня есть другой класс с методом Delete (), который вызывает событие:
public class DeleteDB
{
public void Delete(int index)
{
//delete from db where d.ID = index
//fire deletion event to a DBWrapper object
}
}
По сути, я хочу, чтобы мой вывод был таким:
void Test()
{
DBWrapper dbw = new DBWrapper();
Console.WriteLine(dbw.GetList);
//Apple=1,Banana=2,Cake=3
DeleteDB ddb = new DeleteDB();
ddb.Delete(1);
Console.WriteLine(dbw.GetList);
//Banana=2,Cake=3
}
Как заставить один объект прослушивать событие, вызванное другим объектом?