2009-09-03 10 views
18

Rozwiązuję problem z obsługą zdarzenia myszy w klasie bazowej. Ponieważ punkty przerwania nie działają dobrze w przypadku rozwiązywania problemów z myszami, chcę dodać dane wyjściowe debugowania do procedury obsługi zdarzeń. Jednak ważne jest dla mnie, aby nazwa aktualnej klasy pochodnej została umieszczona w informacji debugowania, ponieważ kod obsługi zdarzeń w klasie bazowej jest współdzielony przez dużą liczbę pochodnych klas i tylko niektóre z nich wykazują problem.C# Pobierz nazwę typu pochodnego od klasy podstawowej

Próbowałem użyć this.GetType().Name, ale to po prostu zwraca typ klasy base. Mogę, oczywiście, rozpocząć modyfikowanie klas i, powiedzmy, przekazać pochodną klasę type do konstruktora klasy podstawowej, gdzie może ona go przechowywać, ale jest to wiele zmian dla tego, co jest oczywiście tylko tymczasową potrzebą. Czy istnieje prosty sposób na uzyskanie typu klasy pochodnej z klasy bazowej?

Odpowiedz

31

this.GetType().Name powinien działać. Możesz nie mieć klasy pochodnej.

8

this.GetType().Name zawsze zwraca nazwę bieżącego wykonującego typu, nie jest typem, że kod, który został napisany w Można emulować breakpoints chociaż korzystając Debugger.Break() w sposób warunkowy.

if (this.GetType().Name == "Problematic type") 
    System.Diagnostics.Debugger.Break(); 
1

Kiedy unosząc zdarzenie, pamiętaj, aby przekazać prawdziwego nadawcę do właściwości nadawcy. Obiekt nadawcy w klasie słuchania powinien poprawnie wskazywać klasę podrzędną, która wywołała zdarzenie.

Powiązane problemy