У меня есть интерфейс с некоторыми универсальными методами, и я хотел реализовать метод с перегрузками, чтобы либо принимать экземпляр класса или его значение PK (которое является либо int, либо GUID, но может быть разным).
Я добавил к методам, подобным этим примерам:
void DoSomething<TKey>(TKey key) where TKey: struct;
void DoSomething<TModel>(TModel model) where TModel : class;
Имя метода DoSomething во втором из них выделено , и ошибка
Тип «ISomeStuff» уже определяет член с именем «DoSomething» с теми же типами параметров.
Я удивлен этим, поскольку я четко определил параметры, которые должны быть разного типа: один - это класс, а другой - структура.
Почему этого недостаточно, чтобы сделать подписи разными?