我有一个抽象基类及其抽象类型参数为:从抽象类和类型参数固有处理类
public abstract class Database<T> where T : DatabaseItem, new() {
protected List<T> _items = new List<T>();
protected virtual void Read (string[] cols) {
T item = new T();
...
}
public abstract class DatabaseItem {
...
}
然后,我有固有孩子类的数量从它:
public class ShopDatabase : Database<ShopItem> {}
public class ShopItem : DatabaseItem {}
public class WeaponDatabase : Database<WeaponItem> {}
public class WeaponItem : DatabaseItem {}
...
现在,我想把一个字典来跟踪数据库和使用DatabaseItem类型返回它们的方法,如下所示:
Dictionary<Type, Database<DatabaseItem>> databases;
public static Database<T> GetDatabase<T>() where T: DatabaseItem {
return databasebases [typeof (T)];
}
然后,它给了我“‘T’必须是一个非抽象类型与公共参数构造函数,以便用它作为参数‘T’”,因为DatabaseItem是抽象错误。我做了DatabaseItem非抽象类型,错误是走了,但还是很多类型转换错误的走了出来......
发现了类似的question但我还是不明白......
有什么更好的解决方案/结构如何实现?
大概定义为您的数据库类的接口,如 字典<类型,了IDatabase> –