Дженерики C# — универсальный интерфейс, реализация которого должна представлять собой любопытно повторяющийся шаблон шабC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Дженерики C# — универсальный интерфейс, реализация которого должна представлять собой любопытно повторяющийся шаблон шаб

Сообщение Anonymous »

Недавно я узнал о шаблоне шаблона «Любопытно повторяющийся», в котором универсальный класс MyGeneric реализуется с типом реализующего класса в качестве параметра универсального типа:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»