Мне нужен обобщенный метод, получающий коллекцию Control'ов из gridMain по критерию, переданному делегатом, опирающимся на их Tag (целое число). Задачу я решил вот так (все работает)
private int GetTag<T>(T control) where T : Control
{
if (!(control is T)) return -1;
int rez;
return int.TryParse((control as T).Tag.ToString(), out rez) ? rez : -1;
}
private List<T> GetControls<T>(T type, TagCriteria cri) where T : Control
{
List<T> rezult = new List<T>();
foreach (var control in gridMain.Children)
if (control is T && cri(GetTag(control as T))) rezult.Add((T)control);
return rezult;
}
Но мне не нравится передавать параметр (например, null as ComboBox в строчке ниже) для определения типа.
GetControls(null as ComboBox, x => x > 0).ForEach(x => x.IsEnabled = false);
Вопрос: Можно ли как-нибудь изящнее? Буду благодарен за комментарии к моему коду. Спасибо.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей