通用过滤.NET 4.5和无参数构造函数的列表

时间:2015-06-18 13:32:19

标签: c# .net

我已经查看了Stack Overflow并无法找到此问题的答案。 我试图根据传递给它的通用标准一般过滤IEnumerable对象。

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

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

1 个答案:

答案 0 :(得分:3)

问题不在于TListItem,但IEnumberable是一个接口,根本无法实例化,因此您无法返回新的IEnumerable。尝试:

return Enumerable.Empty<TListItem>();

其次,您已为通用指定了约束:

where TListItem : new()

这恰恰意味着&#34; TListItem必须是具有无参数构造函数的类型&#34;。因此,如果不需要,您可能希望删除该约束。