我已经查看了Stack Overflow并无法找到此问题的答案。 我试图根据传递给它的通用标准一般过滤IEnumerable对象。
private IEnumerable<TListItem> FilterList<TListItem, TListCriteria>(TListCriteria criteria) where TListItem: new()
{
//Do Work
return new IEnumerable<TListItem>();
}
问题是我有一个构造函数,我得到一个错误,TListItem必须是一个非抽象的公共无参数构造函数。如何使用带参数contstructor的类进行此类通用调用?
答案 0 :(得分:3)
问题不在于TListItem,但IEnumberable是一个接口,根本无法实例化,因此您无法返回新的IEnumerable。尝试:
return Enumerable.Empty<TListItem>();
其次,您已为通用指定了约束:
where TListItem : new()
这恰恰意味着&#34; TListItem必须是具有无参数构造函数的类型&#34;。因此,如果不需要,您可能希望删除该约束。