.NET2.0
グーグルとSOを検索しているにもかかわらず、これを行う方法を見つけることができないようです。
次のクラスがあるとします。
public class Fruit {
prop string Color {get; set;}
}
public class Apple : Fruit {
public Apple() {
this.Color = "Red";
}
}
public class Grape: Fruit {
public Grape() {
this.Color = "Green";
}
}
今私はこれをしたい:
public List<Fruit> GetFruit() {
List<Fruit> list = new List<Fruit>();
// .. populate list ..
return list;
}
List<Grape> grapes = GetFruit();
しかしもちろん私は得Cannot implicitly convert type Fruit to Grape
ます。
これは、次のようにすると本当に混乱する可能性があるためです。
List<Grape> list = new List<Grape>();
list.add(new Apple());
どちらもですがFruit
、はでApple
はないからGrape
です。だからそれは理にかなっています。
しかし、なぜこれができないのかわかりません。
List<Fruit> list = new List<Fruit>();
list.add(new Apple());
list.add(new Grape());
少なくとも、次のことができる必要があります。
List<Fruit> list = new List<Fruit>();
list.add(new Apple()); // will always be Apple
list.add(new Apple()); // will always be Apple
list.add(new Apple()); // will always be Apple
これを行う方法についてのアイデアはあり.NET2
ますか?
ありがとう
編集
すみません、私は間違っていました。私は実際に行うことができます:
List<Fruit> list = new List<Fruit>();
list.add(new Apple());
list.add(new Grape());
.FindAll
と.Convert
トリックを行いました。