所以我使用 CollectionBase 作为自定义集合的继承类。我通过一个抽象类使用 CollectionBase,这样我就不会重复知识(遵循 DRY 原则)。抽象类也被定义为泛型类。这是我实施课程的方式:
public abstract class GenericCollectionBase<T,C> : CollectionBase
{
//Indexders, virtual methods for Add, Contains, IndexOf, etc
}
我利用它,所以我不必在 10 多个类中实现这些基本方法。
我的问题是,当我像这样覆盖 Equals 方法时,我是否走得太远了:
public override bool Equals(object obj)
{
if (obj is C)
{
GenericCollectionBase<T, C> collB =
obj as GenericCollectionBase<T, C>;
if (this.Count == collB.Count)
{
for (int i = 0; i < this.Count; ++i)
{
if (!this[i].Equals(collB[i]))
return false;
}
return true;
}
}
return false;
}
我是否试图用我的摘要完成太多,还是以正确的方式做这件事?
编辑:这是为 .Net 2.0 编写的,无法访问 3.5 来利用 LINQ 之类的东西