我有一个自定义List MyList是一个扩展List,我有一个IEnumerable(或IQueryable)我想做.ToList(),但我想,.ToMyList().
如何实现ToList()方法?ToList()的源代码是创建一个新的List()并将IEnumerable作为参数传递,但我不确定它是如何做到的.
如果您的类是子类List<T>,并且您提供了正确的构造函数,那么您应该能够:
MyList<MyType> list = new MyList<MyType>(theEnumerable);
Run Code Online (Sandbox Code Playgroud)
如果你想要一个类似的简单扩展方法Enumerable.ToList,你可以编写自己的:
public static MyList<T> ToMyList<T>(this IEnumerable<T> theEnumerable)
{
return new MyList<T>(theEnumerable);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以通过以下方式调用:
var list = theEnumerable.ToMyList();
Run Code Online (Sandbox Code Playgroud)
请注意,子类化List<T>通常不是一个好主意.如果您需要自定义集合,则应该考虑子类化Collection<T>和实现IList<T>.如果需要,您仍然可以提供相同的构造函数并使用上述方法填充自定义集合.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |