Определение типа в обобщенном методе

139
15 декабря 2018, 14:40

Мне нужен обобщенный метод, получающий коллекцию 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);

Вопрос: Можно ли как-нибудь изящнее? Буду благодарен за комментарии к моему коду. Спасибо.

READ ALSO
Защита приложения

Защита приложения

Есть такой вопрос:

139
Какой шейдер использовать?

Какой шейдер использовать?

Шейдеры только начинаю изучатьЗадача такая: у объекта есть полностью прозрачные и полностью непрозрачные части

173
Оригинальный размер изображения

Оригинальный размер изображения

Программно добавляю картинку, но как устанавливать ей оригинальный размер как у источника, а не auto или от себя ?

150
OutOfMemoryException в GDI+

OutOfMemoryException в GDI+

Время от времени ловлю OutOfMemoryException при вызове этого метода: BitmapClone (Rectangle, PixelFormat), хотя памяти у меня много

137