![](/img/trans.png)
[英]How can I populated an IEnumerable<MyType>() on an object via configuration?
[英]How can I convert an IEnumerable<MyType> into a MyList<MyType>?
我有一個自定義列表MyList
這是一個擴展List
,我有一個IEnumerable(或IQueryable的),我想要做的.ToList()
但我猜, .ToMyList()
如何實現ToList()方法? ToList()的源代碼是創建一個新的List()並將IEnumerable作為參數傳遞,但是我不確定它會如何處理。
如果您的類繼承List<T>
,並且提供了正確的構造函數 ,則應該能夠:
MyList<MyType> list = new MyList<MyType>(theEnumerable);
如果您想要一個簡單的擴展方法,類似於Enumerable.ToList
,則可以編寫自己的擴展方法:
public static MyList<T> ToMyList<T>(this IEnumerable<T> theEnumerable)
{
return new MyList<T>(theEnumerable);
}
然后,您可以通過以下方式致電:
var list = theEnumerable.ToMyList();
注意,一般來說,將List<T>
子類化並不是一個好主意。 如果需要自定義集合,則應該真正考慮將Collection<T>
子類化並實現IList<T>
。 您仍然可以提供相同的構造函數,並根據需要使用上述方法來填充自定義集合。
如果您有一個基類,並且能夠將列表填充委托給它的構造函數,請執行以下操作:
public MyList(IEnumerable<MyType> items) : base(items) { }
否則,此構造函數應適用於幾乎所有集合類:
public MyList(IEnumerable<MyType> items)
{
if (items == null)
throw new ArgumentNullException("items");
foreach (var item in items)
Add(item);
}
然后,您可以編寫擴展方法,或直接調用此構造函數以從序列中填充新列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.