常规筛选.NET 4.5和无参数构造函数的列表

3vpjnl9f  于 2023-03-04  发布在  .NET
关注(0)|答案(1)|浏览(107)

我已经找遍了堆栈溢出,但找不到这个问题的答案。我正在尝试根据传递给IEnumerable对象的通用条件对其进行通用筛选。

private IEnumerable<TListItem> FilterList<TListItem, TListCriteria>(TListCriteria criteria) where TListItem: new()
{
//Do Work
return new IEnumerable<TListItem>();
}

问题是我有一个构造函数,但我得到一个错误,即TListItem必须是一个带有公共无参数构造函数的非抽象构造函数。我如何使用一个带有参数构造函数的类进行这种类型的泛型调用?

nnsrf1az

nnsrf1az1#

问题不在于TListItem,而在于IEnumerable是一个接口,根本不能示例化,因此不能返回新的IEnumerable
试试看:

return Enumerable.Empty<TListItem>();

其次,您已经为泛型指定了一个约束:

where TListItem : new()

这就意味着TListItem必须是一个带有无参数构造函数的类型,所以如果不需要的话,你可能想去掉这个约束。

相关问题