SORU
4 Aralık 2008, PERŞEMBE


Boş oluşturmak C# olay işleyicileri otomatik olarak

Olası C bir olayı için değil# hiçbir işleyicileri eklenmiş. Her aramadan önce eğer olay boş olup olmadığını kontrol etmek için gereklidir.

if ( MyEvent != null ) {
  MyEvent( param1, param2 );
}

Benim kod mümkün olduğunca temiz tutmak ve o boş çekler kurtulmak istiyorum. Performansı çok fazla, en azından benim durumumda değil etkileyeceğini sanmıyorum.

MyEvent( param1, param2 );

Şimdi ben manuel olarak her bir olay için boş bir satır içi işleyicisi ekleyerek bunu çözmek. Bu vb hatırlamak istiyorum beri hata eğilimli.

void Initialize() {
  MyEvent  = new MyEvent( (p1,p2) => { } );
}

Bir şekilde, belirli bir sınıf otomatik olarak yansıması ve bazı CLR büyü kullanarak tüm olaylar için boş işleyicileri oluşturmak için var mı?

CEVAP
4 Aralık 2008, PERŞEMBE


Başka bir yazı üzerine bunu gördüm ve utanmadan çalmış ve benim kod o zamandan beri çok kullanmıştır:

public delegate void MyClickHandler(object sender, string myValue);
public event MyClickHandler Click = delegate {}; // add empty delegate!

//Let you do this:
public void DoSomething() {
    Click(this, "foo");
}

//Instead of this:
public void DoSomething() {
    if (Click != null) // Unnecessary!
        Click(this, "foo");
}

Eğer herkes bu tekniği kaynağını bilen varsa lütfen yorum olarak gönderin. Gerçekten kaynağı kredi nedeniyle inanıyorum.

(Düzenleme:Eğer bu yazıyı 8**) aldım

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • Triune Films

    Triune Films

    9 ŞUBAT 2006