C#: kalıtsal bir olay Yetiştirmek
Aşağıdaki olaylar içeren bir temel sınıf var:
public event EventHandler Loading;
public event EventHandler Finished;
Bu temel sınıf devralan bir sınıf içinde olay yetiştirmeye çalıştım:
this.Loading(this, new EventHandler()); // All we care about is which object is loading.
Aşağıdaki hatayı alıyorum:
Olay 'BaseClass.Sadece sol tarafta ortaya çıkar = veya - = (') BaseClass . yükleniyor
Erişemiyorum varsayıyorum bu olaylar diğer kalıtsal üyeleri olarak aynı mı?
CEVAP
Sadece ilan sınıfta bir olay olarak erişebilirsiniz .NET aslında temsilci tutan perde arkasında özel örnek değişkenleri oluşturur. Bu işleri yaptırıyoruz
public event EventHandler MyPropertyChanged;
aslında bu işin
private EventHandler myPropertyChangedDelegate;
public event EventHandler MyPropertyChanged
{
add { myPropertyChangedDelegate = value; }
remove { myPropertyChangedDelegate -= value; }
}
ve bu
MyPropertyChanged(this, EventArgs.Empty);
aslında bu
myPropertyChangedDelegate(this, EventArgs.Empty);
(Belli ki) sadece özel temsilci örneği bildirilirken bir sınıf içinde değişken erişebilirsiniz.
Sözleşmenin ilan sınıfı.. böyle bir şey sağlamaktır
protected virtual void OnMyPropertyChanged(EventArgs e)
{
EventHandler invoker = MyPropertyChanged;
if(invoker != null) invoker(this, e);
}
Sonra devralma hiyerarşisi olay çağırmak için aşağıda 14 ** bu sınıfın herhangi bir yerinden ya da arayabilirsiniz.
tıklatın veya değiştirmek radyo kullan...
Python olay sistemi...
Önleme aynı Olay işleyicisi atama bird...
input type=değiştiğinde olay aralığı s...
div ne zaman bir eylemi tetiklemek içi...