Поэтому я использую CollectionBase как унаследованный класс для пользовательских коллекций. Я использую CollectionBase через абстрактный класс, чтобы не повторять знание (следуя принципу СУХОЙ). Абстрактный класс также определяется как универсальный класс. Вот как я реализую свой класс:
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