无法将匿名方法转换为类型“委托”

罗兹贝

我有一个 '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;

    }
);

不幸的是它不起作用。我收到编译器错误:

无法将匿名方法转换为类型“委托”,因为它不是委托类型

我也在这里尝试了解决方案没有成功。

邪恶的企鹅

看起来该方法需要一个Predicate<T>. 您是否尝试过使用谓词语法?

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

或者,让所有类实现一个公共接口并使用它来访问Code. 如果无法使用反射,您至少应该缓存PropertyInfo用于查询类型信息的每个不同类型的速度非常慢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法将方法组“ FirstOrDefault”转换为非委托类型

无法将方法组“列表”转换为非委托类型

无法将委托转换为通用类型T

无法将方法组转换为非委托类型System.Data.Datatable

无法通过反射将方法组转换为非委托类型

无法将方法组“###”转换为非委托类型 UnityEngine.Vector3

是否将匿名lambda转换为强类型的委托会禁用编译器缓存?

无法将匿名类型#1 []隐式转换为匿名类型#2 []

C#Unity:无法将方法组“ GetComponent”转换为非委托类型“ Rigidbody2D”

PageList无法将方法组'pagedlistpager'转换为ASP.NET Core MVC 2.1中的非委托类型

无法将 lambda 表达式转换为 int 类型,因为它不是委托类型

无法将lambda表达式转换为类型'bool',因为它不是委托类型

无法将lambda表达式转换为类型“ ...”,因为它不是委托类型

无法将 lambda 表达式转换为类型“DbContextOptions <DataContext>”,因为它不是委托类型

无法将lambda表达式转换为类型'bool',因为它不是委托类型错误

将匿名类型转换为字典

将JObject转换为匿名类型

无法将类型List <<匿名类型:.. >>隐式转换为IEnumerable <Product>

无法将Lambda表达式转换为C#中的预期委托类型

CheckBoxFor - 无法将 lambda 表达式转换为预期的委托类型

无法将lambda表达式转换为委托类型'System.Func <T,TKey>'

无法将X类型转换为T。泛型类中的泛型委托

无法将类型委托隐式转换为字符串

mvvmcross iOS绑定到列表无法将“ lambda expression”转换为非委托类型“ string”

CS0428 C#无法将方法组转换为非委托类型“对象”。您是否打算调用该方法?

未捕获的类型错误:无法在推送时将 undefined 或 null 转换为对象(<匿名>)

无法将匿名类型隐式转换为 System.Collections.Generic.List

无法隐式将匿名类型#1转换为对象

尝试将 C# 匿名类型转换为强类型