Generic Constraints on function

Я хочу написать универсальную функцию, которая имеет ограничение на тип. В частности, мне нужно что-то вроде этого:

bool IsInList<T>(T value, params T[] args)
{
    bool found = false;
    foreach(var arg in args)
    {
        if(arg == value)
        {
            found = true;
            break;
        }
    }
    return found;
 }

Дело в том, что вы можете проверить, находится ли элемент в списке параметров, а именно:

if(IsInList("Eggs", "Cheese", "Eggs", "Ham"))

Однако компилятор хрипит в строке равенства. Поэтому я хочу наложить ограничение на тип, который он реализует IEquatable. Однако ограничения, похоже, работают только на уровне класса. Это правильно или есть какой-то способ указать это в общем?

10
задан svick 19 December 2012 в 14:54
поделиться