所以我使用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