невозможно преобразовать анонимный метод в тип «делегат» - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть «BindingListView View», привязанный к «DataGridView» Equin.ApplicationFramework.Согласно документам, фильтрация выполняется следующим образом:

View.ApplyFilter(
    delegate (SomeViewModel item)
    {
        return item.Code == textBox1.Text;

    }
);

Мне нужен метод фильтрации, который может фильтровать item.Code == 'SomeText' независимо от типа элементов в BindingListView. Есть ли способ добиться этого?Я придумал

View.ApplyFilter(
    delegate (object item)
    {
        return item.GetType().GetProperty("Code").GetValue(item).ToString() == textBox1.Text;

    }
);

К сожалению, это не работает.Я получаю сообщение об ошибке компилятора:

не может преобразовать анонимный метод в тип 'делегат', потому что это не тип делегата

Я также попробовал решение здесь безуспешно.

1 Ответ

0 голосов
/ 23 ноября 2018

Похоже, что этот метод занимает Predicate<T>.Вы пытались использовать синтаксис предикатов?

View.ApplyFilter(i => (string)i.GetType().GetProperty("Code").GetValue(i) == "SomeText")

С другой стороны, было бы лучше, если бы все классы реализовали общий интерфейс и использовали его для доступа к Code.Если нет никакого способа использования отражения, вы должны по крайней мере кэшировать PropertyInfo для каждого отдельного типа, используемого, так как запрос информации о типе довольно медленный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...