Страницы

Поиск по вопросам

среда, 3 апреля 2019 г.

Возврат объекта типа T

Имеется такой код: public static FrameworkElement GetParentOfType(FrameworkElement element) { if (element is T) return element; while (true) { element = element.Parent as FrameworkElement; if (element is T) break; } return element; } ... MyPanel myPanel = (MyPanel)GetParentOfType(myTextBox); MyLabel myLabel = (MyLabel)GetParentOfType(myTextBox); ... Но мне хотелось бы сделать что то вроде этого: public static T GetParentOfType(FrameworkElement element) { if (element is T) return element as T; while (true) { element = element.Parent as FrameworkElement; if (element is T) break; } return element as T; } ... MyPanel myPanel = GetParentOfType(myTextBox); MyLabel myLabel = GetParentOfType(myTextBox); ... Но как хотелось бы не работает. Где об этом почитать или как быть? Сам искать пытался, но как правильно сформулировать запрос не знаю.


Ответ

Надо вот как: public static T GetParentOfType(FrameworkElement element) where T : FrameworkElement { if (element is T) return element as T; while (element != null) { element = element.Parent as FrameworkElement; if (element is T) break; } return element as T; }

Комментариев нет:

Отправить комментарий