我有一个基本抽象类及其抽象类型参数:
public abstract class Databasewhere T : DatabaseItem, new() { protected List _items = new List (); protected virtual void Read (string[] cols) { T item = new T (); ... } public abstract class DatabaseItem { ... }
然后我有许多固有的儿童课程:
public class ShopDatabase : Database{} public class ShopItem : DatabaseItem {} public class WeaponDatabase : Database {} public class WeaponItem : DatabaseItem {} ...
现在,我想使用Dictionary来跟踪数据库以及使用DatabaseItem类型返回它们的方法,如下所示:
Dictionary> databases; public static Database GetDatabase () where T: DatabaseItem { return databasebases [typeof (T)]; }
然后它给了我"'T'必须是一个非抽象类型,带有一个公共无参数构造函数,以便将它用作参数'T'"错误,因为DatabaseItem是抽象的.我将DatabaseItem设置为非抽象类型,错误消失但仍然出现了很多类型转换错误...
发现了类似的问题,但我还是不明白......
实现这一目标的更好的解决方案/结构是什么?