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.
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.
Drobny offtopic
Tworzysz sobie w kodzie sytuację patologiczną - łamiesz zasadę podstawienia Liskov.
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
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ą.
@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.
A czy obiekt Child nie ma czasem właściwości Parent? Wtedy wystarczy zastosować
child.Parent is StackPanel