以下は考案されたものですが、我慢してください。
interface Clonable<TSubClass>
{
TSubClass Clone();
}
TSubClassを実装タイプに制限するにはどうすればよいですか?
つまり、実装者にこれを行わせるだけです。
class Dog : Clonable<Dog>
{
Dog Clone()
{
....
}
}
これではない:
class BadDog : Clonable<Rabbit>
{
Rabbit Clone()
{
....
}
}