.NET, gerçekten temsilci barındıran sahnelerin arkasında özel örnek değişkenler oluşturduğundan, yalnızca bildiren sınıftaki bir olaya erişebilirsiniz. Bunu ..
public event EventHandler MyPropertyChanged;
aslında bunu yapıyor;
private EventHandler myPropertyChangedDelegate;
public event EventHandler MyPropertyChanged
{
add { myPropertyChangedDelegate += value; }
remove { myPropertyChangedDelegate -= value; }
}
ve bunu yaparken ...
MyPropertyChanged(this, EventArgs.Empty);
aslında bu ...
myPropertyChangedDelegate(this, EventArgs.Empty);
Böylece, özel delege örneği değişkenine yalnızca bildiren sınıftan erişebilirsiniz (açık bir şekilde).
Sözleşme, ilan eden sınıfta böyle bir şey sağlamaktır.
protected virtual void OnMyPropertyChanged(EventArgs e)
{
EventHandler invoker = MyPropertyChanged;
if(invoker != null) invoker(this, e);
}
Daha sonra OnMyPropertyChanged(EventArgs.Empty)
olayı çağırmak için o sınıfın herhangi bir yerinden veya miras heirarşisinin altından çağrı yapabilirsiniz .