Anda hanya bisa mengakses acara di kelas yang mendeklarasikan, karena .NET membuat variabel instance pribadi di belakang layar yang benar-benar menampung delegasi. Melakukan ini..
public event EventHandler MyPropertyChanged;
sebenarnya melakukan ini;
private EventHandler myPropertyChangedDelegate;
public event EventHandler MyPropertyChanged
{
add { myPropertyChangedDelegate += value; }
remove { myPropertyChangedDelegate -= value; }
}
dan melakukan ini ...
MyPropertyChanged(this, EventArgs.Empty);
sebenarnya ini ...
myPropertyChangedDelegate(this, EventArgs.Empty);
Jadi Anda dapat (jelas) hanya mengakses variabel instance delegasi pribadi dari dalam kelas yang mendeklarasikan.
Konvensi ini untuk menyediakan sesuatu seperti ini di kelas yang mendeklarasikan ..
protected virtual void OnMyPropertyChanged(EventArgs e)
{
EventHandler invoker = MyPropertyChanged;
if(invoker != null) invoker(this, e);
}
Anda kemudian dapat menelepon OnMyPropertyChanged(EventArgs.Empty)
dari mana saja di kelas itu atau di bawah pusaka warisan untuk meminta acara tersebut.