Общие ограничения на перегрузки методов

У меня есть интерфейс с некоторыми универсальными методами, и я хотел реализовать метод с перегрузками, чтобы либо принимать экземпляр класса или его значение PK (которое является либо int, либо GUID, но может быть разным).

Я добавил к методам, подобным этим примерам:

    void DoSomething<TKey>(TKey key) where TKey: struct;
    void DoSomething<TModel>(TModel model) where TModel : class;

Имя метода DoSomething во втором из них выделено , и ошибка

Тип «ISomeStuff» уже определяет член с именем «DoSomething» с теми же типами параметров.

Я удивлен этим, поскольку я четко определил параметры, которые должны быть разного типа: один - это класс, а другой - структура.

Почему этого недостаточно, чтобы сделать подписи разными?

5
задан Jon Egerton 14 October 2011 в 08:21
поделиться