自定义iccomparer错误-类型参数不能从用法中推断出来
本文关键字:用法 推断出 不能 iccomparer 错误 类型参数 自定义 | 更新日期: 2023-09-27 18:10:19
我正在尝试使用IComparer与泛型类型。
下面的代码产生以下错误:"类型参数不能从用法中推断出来。尝试显式指定类型参数。"
如果我从OrderBy调用中删除自定义比较器,那么代码将编译并排序良好,但是我需要能够传入我的icomparer。同样值得注意的是,如果我使用对象/字符串等类型,下面的代码可以工作,但当我尝试使用泛型类型
时失败。public IQueryable<T> OrderResults<T, TU>(IQueryable<T> queryData, IComparer<TU> customComparer, string sortColumnName)
{
var sortPropertyInfo = queryData.First().GetType().GetProperty(sortColumnName);
return queryData.OrderBy(x => sortPropertyInfo.GetValue(x, null), customComparer);
}
由于GetValue(x,null)
返回类型System.Object
,您的代码片段有一些歧义。试试以下命令:
public IQueryable<T> OrderResults<T, TU>(IQueryable<T> queryData, IComparer<TU> customComparer, string sortColumnName)
{
var sortPropertyInfo = queryData.First().GetType().GetProperty(sortColumnName);
return queryData.OrderBy(x => (TU)sortPropertyInfo.GetValue(x, null), customComparer);
}
至少没有编译时错误。如果您有一些用于测试的代码,我可以验证它是否有效....