Etkinliğin dinleyici olup olmadığını tespit etmek mümkün mü? (Kimse buna ihtiyaç duymazsa, olay sağlayıcım nesnesini atmam gerekir)Etkinliğin herhangi bir dinleyicisi olup olmadığını kontrol edin.
cevap
sınıf bir 3. parti kütüphanede olduğunu ve can varsayalım:
DÜZENLEME
sınıfın dışından TheEvent erişemez olduğundan, denetimi yapar bir yöntem uygulayabilir 't değiştirilebilir:
public class Data
{
public event EventHandler OnSave;
//other members
}
Programınızda:
Data d = new Data();
d.OnSave += delegate { Console.WriteLine("event"); };
var handler = typeof(Data).GetField("OnSave", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(d) as Delegate;
if (handler == null)
{
//no subscribers
}
else
{
var subscribers = handler.GetInvocationList();
//now you have the subscribers
}
ItInvocationList gerçekten gerekli değil çağırıyor görünüyor, null için işleyici yeterlidir. Doğrumuyum? – user626528
@ user626528: evet siz haklısınız. Bu örnekte bazı durumlarda yararlı olabilecek bir şey gösteriyorum. –
Bir OnSave olayı eklenmediğinde işleyici null olursa, yukarıdaki kod bir null çeke sahip olmalı ya da başka bir hata vermelidir. – Justin
Olay olup olmadığını kontrol edebilirsiniz! = Null. Bu her zaman kontrol ihtiyaç C# arada
, Bir olayı:if (TheEvent != null) {
TheEvent(this, e);
}
ve sebebi olay herhangi dinleyicisi olup olmadığını kontrol etmek için tam olarak bu.
public class TheClass {
public bool HasEventListeners() {
return TheEvent != null;
}
}
3. taraf tarafından üretildiği için nesnenin dışından kontrol etmem gerekiyor. Birinin nesne olayı için abone olup olmadığını kontrol etmem ve eğer abonelik yoksa bertaraf etmeliyim. – user626528
Yapabileceğinizi sanmıyorum, bir yöntem sargısına ihtiyacınız var – Simone
düzenlenmiş cevaba bakın. – Simone
void Main()
{
Console.WriteLine(ContainsOnSomethingEvent()); // false
OnSomething += (o,e) => {};
Console.WriteLine(ContainsOnSomethingEvent()); // true
}
EventHandler mOnSomething;
event EventHandler OnSomething {
add { mOnSomething = (EventHandler)EventHandler.Combine(mOnSomething, value); }
remove { mOnSomething = (EventHandler)EventHandler.Remove(mOnSomething, value); }
}
public bool ContainsOnSomethingEvent() {
return mOnSomething != null && mOnSomething.GetInvocationList().Length > 0;
}
- 1. Bir öğenin üzerinde olay dinleyicisi olup olmadığını kontrol edin. jquery
- 2. Yalancı olup olmadığını kontrol edin
- 3. Türün bir arabirim olup olmadığını kontrol edin
- 4. Bir sayfanın açık olup olmadığını kontrol edin
- 5. Listenin bir türü olup olmadığını kontrol edin?
- 6. Bir nesnenin boş olup olmadığını kontrol edin
- 7. Dize bir sayı olup olmadığını kontrol edin
- 8. jQuery seçilen girişlerden herhangi birinin boş olup olmadığını kontrol edin
- 9. Stdin boş olup olmadığını kontrol edin
- 10. Yineleyicinin türü reverse_iterator olup olmadığını kontrol edin
- 11. Java'da sürekli değişiklik olup olmadığını kontrol edin?
- 12. VB int boş olup olmadığını kontrol edin
- 13. FinderSync uzantısı seçili olup olmadığını kontrol edin
- 14. Ortam değişkeni ayarlanmış olup olmadığını kontrol edin
- 15. Rest API'da kayıt olup olmadığını kontrol edin.
- 16. Önbellek Picasso'da görüntü olup olmadığını kontrol edin
- 17. NSURL Yerel Dosya olup olmadığını kontrol edin
- 18. Uzak makinede dosya olup olmadığını kontrol edin
- 19. javascript css taşma olup olmadığını kontrol edin
- 20. Görüntülerin yüklü olup olmadığını kontrol edin?
- 21. Resim olup olmadığını kontrol edin php
- 22. Tablonun var olup olmadığını kontrol edin C#
- 23. img'nin src olup olmadığını kontrol edin
- 24. Web sitesi uyumlu olup olmadığını kontrol edin
- 25. Sightly: boş listelerin olup olmadığını kontrol edin
- 26. Python'da AJAX isteğinin olup olmadığını kontrol edin
- 27. Yolun ağda olup olmadığını kontrol edin
- 28. dize resim olup olmadığını kontrol edin
- 29. Öğenin selenyumda tıklanabilir olup olmadığını kontrol edin
- 30. İmlecin sonuçları olup olmadığını kontrol edin
Bkz. Düzenle ..... –