SORU
16 NİSAN 2009, PERŞEMBE


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
16 NİSAN 2009, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bogdan Gabriel

    Bogdan Gabri

    5 Aralık 2006
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010