#c_sharp #net #generics
Имеется такой код: 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); ... Но как хотелось бы не работает. Где об этом почитать или как быть? Сам искать пытался, но как правильно сформулировать запрос не знаю.
Ответы
Ответ 1
Надо вот как: 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; } Ответ 2
Попробуй что-то такое public T ConvertTo(SomeType val) { return (T)Convert.ChangeType(val, Type.GetTypeCode(typeof(T))); } Т.е. использовать принудительное преобразование типа, а не оператор as
Комментариев нет:
Отправить комментарий