我已经找遍了堆栈溢出,但找不到这个问题的答案。我正在尝试根据传递给IEnumerable对象的通用条件对其进行通用筛选。
private IEnumerable<TListItem> FilterList<TListItem, TListCriteria>(TListCriteria criteria) where TListItem: new()
{
//Do Work
return new IEnumerable<TListItem>();
}
问题是我有一个构造函数,但我得到一个错误,即TListItem必须是一个带有公共无参数构造函数的非抽象构造函数。我如何使用一个带有参数构造函数的类进行这种类型的泛型调用?
1条答案
按热度按时间nnsrf1az1#
问题不在于
TListItem
,而在于IEnumerable
是一个接口,根本不能示例化,因此不能返回新的IEnumerable
。试试看:
其次,您已经为泛型指定了一个约束:
这就意味着
TListItem
必须是一个带有无参数构造函数的类型,所以如果不需要的话,你可能想去掉这个约束。