最近我使用了一个从集合继承的类,而不是在类中实例化集合,这是可以接受的吗?或者它会在以后产生看不见的问题吗?为了清楚起见,下面的例子如下:
public class Cars : List<aCar>而不是像这样的东西:
public class Cars
{
List<aCar> CarList = new List<aCar>();
}有什么想法吗?
发布于 2008-12-08 15:52:32
这样做的问题是,您的Cars类仍然具有它从List继承的接口,这可能会允许您不想要的操作。
发布于 2008-12-08 15:53:46
这取决于你的课程的最终目的。如果它只能作为您自己的集合实现来工作,请使用继承。如果不是,则将a集合作为属性包括在内。第二个选项更通用:
发布于 2008-12-08 15:58:22
我之前误读了这个问题。
我建议使用组合而不是继承。如果你想使用所有时髦的LINQ东西,一定要实现IEnumerable<T>,甚至IList<T> --但我不会直接从List<T>派生出来。
如果您确实想“免费”获得收藏内容,但仍然保留控制权,那么您可以使用CollectionBase。这仍然限制了您继承的机会,但至少您对集合中发生的事情有了更多的控制。
https://stackoverflow.com/questions/349904
复制相似问题