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

  • BDGcustoms

    BDGcustoms

    24 NİSAN 2011
  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009