У меня есть следующая иерархия универсальных типов:
interface IGenericInterface<TId, TValue>
{…}
class A : IGenericInterface<long, string>
Я хочу разработать универсальный тип, который принимает IGenericInterface в качестве типа.Решение, разрешенное компилятором:
class SomeType<TType, TId, TValue> where TType : IGenericInterface<TId, TValue>
Когда мне нужно унаследовать такой тип, мне нужно указать:
class Derived : SomeType<A, long, string>
Это похоже на избыточность для указания 2-го и 3-говведите аргументы, потому что класс A уже имеет IGenericInterface<long, string>
.
Есть ли способ добиться того, чего я хочу - получить класс более элегантным способом?