2016-04-13 14 views
1

Bu yığın taşması sorunun cevabı hakkında karıştı:VS2013 hata ayıklayıcıdaki bir etkinliğe kaç yöntemin eklendiğini görmenin bir yolu var mı?

IsVisibleChanged += delegate { UpdateReallyLoopRendering(); }; 

... IsVisibleChanged UIElement geçerli::

How to find list of events using Debugger (VS Professional 2012)?

ben bu satırı dahil bazı kod ters mühendislik oldu

public event DependencyPropertyChangedEventHandler IsVisibleChanged 

Çağırma listesine kaç tane yöntem eklendiğinden ve bunların bir kısmının yinelenebileceğinden endişeleniyordum, bu yüzden neyin ya da en azından ne olduğunu görmek istedim Hata ayıklayıcıda kaç tane öğe var? Yukarıdaki S.O. soru, bir QuickWatch penceresinde bunu yapmanın bir örneğini gösterir, ancak daha sonra etrafındaki metin çapraz çizilir, ancak hala mevcuttur. Ve yanıtın çapraz olmayan kısmı, yapamayacağını söylüyor.

IS IsVisibleChanged için çağrı listesinde bulunan öğeleri görmenin bir yolu var mıdır?

DÜZENLEME: Bu soru C# Know how many EventHandlers are set? bir kopyası olarak işaretlendi ama

A çünkü o kopyası nasıl görmüyorum: sorum şu: benim sorum Microsoft UIElement

B hakkındadır Hata ayıklayıcısında nasıl yapılır

+0

Nasıl bir kopyası var? "Bu sorunun zaten bir cevabı var" örneği, kişinin kendi oluşturduğu bir etkinlik işleyicisidir - bunu bir UIElement ** 'e nasıl uygularım? Ayrıca N.B. Benim sorum bu ** hata ayıklayıcı ** nasıl yapılacağıdır. – user316117

cevap

0

Delegate.GetInvocationList() yöntemini yapabilirsiniz. Aşağıdaki örnek kod bölümüne bakın:

public class Program 
{ 
    public static void Main() 
    { 
     Test t = new Test(); 
     t.Click += Click_1; 
     t.CheckInvocationList(); 
    } 

    private static void Click_1(object sender, EventArgs e) {} 
} 

public class Test 
{ 
    public event EventHandler Click; 

    public void CheckInvocationList() 
    { 
     var t = Click; 
     if(t != null) 
     { 
      var methods = t.GetInvocationList(); 
      Console.WriteLine(methods.Length); // Output = 1 
     } 
    } 
} 
+0

Önerinizi durumuma nasıl uygularım? Bir _IsVisibleChanged.GetInvocationList() _ yapmaya çalışırsam, derleyici IsVisibleChanged öğesinin yalnızca + = veya - = 'nin sol tarafında görünebileceğine dikkat çeker. – user316117

İlgili konular