Jak sprawdzić typ rodzica obiektu?

Jak sprawdzić typ rodzica obiektu?
residue
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Chciałbym stworzyć blok warunkowy na podstawie następującego pseudokodu:

Kopiuj
if (GetParentType(Child.Name) == StackPanel)
{
      CzyńCuda();
}

Chodzi mi wyłącznie o sprawdzenie typu bezpośredniego rodzica w hierarchii obiektów.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
5

Drobny offtopic

Tworzysz sobie w kodzie sytuację patologiczną - łamiesz zasadę podstawienia Liskov.

Aventus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: UK
  • Postów: 2235
2

Choć zgadzam się z @Patryk27 to faktycznie są czasem sytuacje gdzie czegoś takiego nie da się uniknąć. W tej sytuacji wystarczy użyć operatora is, np.

Kopiuj
 foo is StackPanel 

https://msdn.microsoft.com/en-us/library/scekt9xw.aspx

residue
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Właśnie podejrzewałem, że mój problem wynika z naruszenia jakiejś elementarnej zasady. Dziękuję Ci za zwrócenie uwagi - zaraz się zapoznam z tą zasadą.

residue
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

@Aventus - StackPanel jest deklarowany dynamicznie bez sprecyzowania nazwy. Właśnie myślałem o operatorze is, ale nie wiem jak go tutaj wgryźć. Dodam, że mam w kodzie najpewniej tę właśnie pojedynczą sytuację, która by panią Liskov zasmuciła. Muszę jakoś reprezentować tego rodzica z lewej strony is.

Aventus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: UK
  • Postów: 2235
1

A czy obiekt Child nie ma czasem właściwości Parent? Wtedy wystarczy zastosować

Kopiuj
 child.Parent is StackPanel 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.