Suppongo che la logica che tu vuoi implementare sia di non fare l'inserimento nel caso in cui sia già presente un elemento simile.
invece di usare IComparable potresti usare un Func che dati due elementi ti restituisca un bool.
Qualcosa tipo:
public bool AddToCompare(T newItem, Func<T, T, bool> comparer)
{
foreach (var item in this)
{
if (comparer(item, newItem))
return false;
}
return true;
}
In alternativa, se non hai altre esigenze particolari, visto che erediti direttamente da List<T, potresti anche evitare totalmente di scrivere una classe ed usare un extension method:
public static bool AddToCompare<T>(this List<T> list, T newItem, Func<T, T, bool> comparer) where T :IComparable
{
foreach (var item in list)
{
if (comparer(item, newItem))
return false;
}
return true;
}
Modificato da mizrael il 04 ottobre 2010 09.16 -