1
例如,如何存储所有使用派生自相同基类的类型的DataContainers的列表。存储派生对象的泛型类的列表
public class Animal {}
public class Cat : Animal {}
public class Dog : Animal {}
public class DataContainer <TData> where TData : Animal {
TData innerObject = new TData();
public TData GetData() {
return innerObject;
}
}
public class DataManager {
static void Main() {
DataContainer<Cat> CatData = new DataContainer<Cat>();
DataContainer<Dog> DogData = new DataContainer<Dog>();
var AnimalData = new List<DataContainer<Animal>>();
AnimalData.Add (CatData);
AnimalData.Add (DogData);
for (int i = 0; i < AnimalData.Count; i++) {
Animal animal = AnimalData[i].GetData();
}
}
}
如果对于一个泛型类来说是不可能的,那么数组是否可能呢?
编辑:收到此错误:ArrayTypeMismatchException: Source array type cannot be assigned to destination array type.
这导致ArrayTypeMismatchException:在Unity 5.2
完美的作品!谢谢! – user196399
该铸造工程,但有什么办法可以添加covariant对象到集合? – user196399
@ user196399不确定你的意思(在我的例子中没有强制转换)也许提供一个代码示例,或者提出一个新问题并给我一个链接? – BradleyDotNET