У меня есть интерфейс:Рroblem с родовыми интерфейсов
interface IKey<TId, TName>
where TId: IEquatable<TId>
where TName: IEquatable<TName>
{
TId Id { get; set; }
TName Name { get; set; }
}
Тогда я реализовать Айки, как это:
class Item : IKey<int, string>
{
int Id { get; set; }
string Name { get; set; }
//...
}
И у меня есть полуботинки, которые должны работать с этими элементами
class ItemCollection<T>
where T : IKey<TId, TName> //Any type that implements IEquatable<...>
where TId: IEquatable<TId>
where TName: IEquatable<TName>
{
//...
}
И проблема в том, что она не работает. Есть ли способ, которым я могу сделать это правильно?
Существует еще одна реализация Whithout IEquatable
, используя IKey<out TId, out TName>
и IKey<object, object>
, но он не работает с ценностными типами и использует Object.Equals
.