Ограничить общий параметр интерфейса подклассом

Следующее надумано, но потерпите:

interface Clonable<TSubClass>
{
    TSubClass Clone();
}

Как я могу ограничить TSubClass типом реализации?

т.е. пусть это сделает только разработчик:

class Dog : Clonable<Dog>
{
    Dog Clone() 
    {
       ....
    }
}

Не это:

class BadDog : Clonable<Rabbit>
{
    Rabbit Clone()
    {
       ....
    }
}
10
задан Alex 9 July 2018 в 08:29
поделиться