これはおそらく例で最もよく説明されます。
DogとCatの2つの構造体があり、どちらもIAnimalに属しています。
IAnimalには、IAnimalから継承するオブジェクトを関数と呼ばれるものと同じ型に変換するConvertFrom(IAnimal)関数があります。
例えば:
Dog.ConvertFrom(cat)を呼び出すと、catからフィールドがマップされた犬が得られます。
Cat.ConvertFrom(dog)を呼び出すと、dogからフィールドがマップされた猫が表示されます。
インターフェイスでこれを行う方法はありますか?関数が関数を実装するクラスと同じ型を返す必要があることを指定しますか?
私はそれを単に次のように書くことを考えました:
IAnimal ConvertFrom(IAnimal)
しかし、IAnimalとしてではなく、犬または猫として戻ってくることを指定できるようにしたいと思います(したがって、さらなるキャストを軽減します)。