所以我使用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
我使用时得到这个错误 “如果(!EqualityComparer .Equals(此[I],collB [I]))” 一个对象引用是所必需的非静态字段,方法或属性“系统。 Collections.Generic.EqualityComparer .Equals(T,T)' –
2009-02-12 17:07:30