Класс наследуется от HashSet, чтобы получить набор уникальных объектов с пользовательской проверкой EqualKeys(T x, T y)
вместо IEqualityComparer
.
public class UniqueSet<T> : HashSet<T> where T : IKey
{
public new void Add(T item)
{
// .. check item for null, empty key etc.
if (base.Any(t => UniqueSet<T>.EqualKeys(t, item)))
{
throw new ArgumentException(..);
}
if (!base.Add(item)) throw new ArgumentException(..);
}
private static bool EqualKeys(T x, T y)
{
return ((IKey)x).Key.Equals(((IKey)y).Key, StringComparison.CurrentCultureIgnoreCase);
}
}
Код не компилируется, поскольку мне нужно заменить base.Any
с this.Any
.
Боюсь, я не понимаю, почему это так?