Shape という基本クラスがあるとします。そして、circle や square などのいくつかのサブクラス。
次に、GetShape という別のクラスにメソッドを作成しましょう。
public Shape GetShape()
{
return new Circle();
}
つまり、shapeType を渡して、厳密に型指定された Shape サブクラスを返すことができるということです。上記の例は、実際のコードを大幅に単純化したものですが、要点は合っていると思います。
このメソッドを呼び出すと、次のようになります
var shapeCreator = new ShapeCreator();
Circle myCircle = shapeCreator.GetShape();
唯一の問題は、キャストが必要なため、実行すらできないことです。
これは実際に機能します:
Circle myCircle = (Circle) shapeCreator.GetShape();
私はそのキャストに夢中ではありません。どうすればそれを回避し、互換性のあるサブクラスを返すことができるように、メソッドが基本クラスを返すようにする方法を達成できますか。