[Homework] OOP - Delegates and Events - Problem {3) Student Class - как да засечем промяна в класа?
Гледах лекцията на Наков за евентите и разбрах много малко. Обяснението му беше "Евентите правят това и това, няма да ви обяснявам как се пишат..." И в домашното да напишем евенти. То хубаво самообучение ама...
Както и да е, гледам в момента един линк от презентацията:
http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx
И проблемът е, че разбирам много малко. Основният ми проблем е, че не схващам къде точно програмата разбира, че има промяна в пропъртито на класа? Как го хендълва горе-долу схванах. Да караме по ред проблемните части от кода:
public delegate void ChangedEventHandler(object sender, EventArgs e); - тук декларираме делегат. Макар че тези (object sender, EventArgs e) така и не мога да ги разбера какво представляват и как се ползват.
public event ChangedEventHandler Changed; - тук присвояваме делегата към евента Changed.
protected virtual void OnChanged(EventArgs e) { if (Changed != null) Changed(this, e); } - Това си нямам и идея какво е. Нито какво прави.
Виждам, че го викаме по-надолу при определени обстоятелства:
public override int Add(object value) { int i = base.Add(value); OnChanged(EventArgs.Empty); - явно това променя по някакъв начин стойността на EventArgs (каквото и да е това) и вика метода return i; }
Та не мога да разбера - как да накарам класа да зацепи, че има промени в пропъртитата и да извикам хендлъра? Като цяло смятам, че темата не е обяснена достатъчно добре и ясно. А дори не знам какво да търся в нета. Информацията е на прекалено високо ниво, за да я разбера.