我写了一个这样的集合:
class AnimalCollection<TValue> where TValue : Animal, new()
{
void Add(TValue value){};
void AddNew()
{
Add(new TValue());
}
}
我有一些从动物派生的类:
class Animal
{
string Name;
}
class Fish : Animal
{
Fish(){};
}
class Mammal : Animal
{
Mammal(){};
}
接下来我想以同样的方式对待所有的收藏品。
static void Main(string[] args)
{
var FishAquarium = new AnimalCollection<Fish>();
var MammalEnclosure = new AnimalCollection<Mammal>();
foo(FishAquarium);
foo(MammalEnclosure);
}
问题1: 我想通过每个AnimalCollection,哪种类型需要'zoo'?
static void foo(AnimalCollection<Animal> zoo)
{
foreach(var animal in Zoo)
Console.WriteLine(animal.Name);
zoo.AddNew();
}
问题 2:泛化泛型类的最佳实践是什么?
更新:
更具体地说,我有一个可以获取任何 AnimalCollection 的类。
class ZooController
{
public AnimalCollection<Animal> Animals{get; set;}
}