Jak sprawdzić typ rodzica obiektu?

0

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

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

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

5

Drobny offtopic

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

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.

 foo is StackPanel 

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

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ą.

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.

1

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

 child.Parent is StackPanel 

1 użytkowników online, w tym zalogowanych: 0, gości: 1