Код: Выделить всё
class Concrete : MyGeneric
Мне интересно, можно ли определить интерфейс, который должен быть реализован только с использованием этого шаблона, поскольку выбранный параметр типа должен быть, по крайней мере, ковариантным с типом реализующего класса.
Мне было интересно, можно ли определить интерфейс, который должен быть реализован только с использованием этого шаблона.
Мне интересно, возможно ли определить интерфейс, который должен быть реализован только с использованием этого шаблона, поскольку выбранный параметр типа должен быть, по крайней мере, ковариантным с типом реализующего класса.
p>
Под этим я подразумеваю, что я хочу, чтобы интерфейс/класс был определен, например, когда класс X реализует/наследует от интерфейса/класса MyGeneric< /code> со спецификацией типа, указанная спецификация типа должна быть X или ковариантным с ним классом (возможно, с неявным преобразованием в/из)
Например:
Код: Выделить всё
// should X implement MyGeneric with a specific type, said type must be X itself.
class X : MyGeneric // valid, type param X is covariant with implementing class X
class Z
class Y : MyGeneric // invalid, type param Z is not covariant with implementing class Y
Код: Выделить всё
class A : MyGeneric; // valid
class B : MyGeneric; // invalid
class C : IMyGeneric; // maybe valid if we really push it
class D : C;
Так возможно ли это?
Подробнее здесь: https://stackoverflow.com/questions/791 ... riously-re