由于各种原因,我已经实现了自己的集合类。如何避免铸造失败ItemCollection resultCollection = (ItemCollection)list;?我是继承人,List<T>所以我不应该投射吗?我可以修改我的BaseEntityCollection能力以使其能够执行此操作吗?
static class Program
{
static void Main()
{
ItemCollection collection = new ItemCollection();
Item item = new Item();
item.ID = 1;
item.Name = "John";
collection.Add(item);
List<Item> list = collection.FindAll(x => x.ID == 1 && x.Name == "John");
ItemCollection resultCollection = (ItemCollection)list; // It's breaking here
}
}
public class ItemCollection : BaseEntityCollection<Item>
{
}
public class Item : BaseEntity
{
public int ID { get; set; }
public string Name { get; set; }
}
public abstract class BaseEntityCollection<T> : List<T>, IEnumerable<T> where T : BaseEntity, new()
{
}
public abstract class BaseEntity
{
}
我知道我可以FindAll在其上单独实现,ItemCollection但是我想利用上可用的所有方法List<T>。
我也知道我能做到list.ForEach(resultCollection.Add);。但这意味着我要避免再次遍历该集合。
一只斗牛犬
相关分类