小编Ric*_* Fu的帖子

处理抽象类和类型参数固有的类

我有一个基本抽象类及其抽象类型参数:

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 {
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后我有许多固有的儿童课程:

public class ShopDatabase : Database<ShopItem> {}
public class ShopItem : DatabaseItem {}

public class WeaponDatabase : Database<WeaponItem> {}
public class WeaponItem : DatabaseItem {}

...
Run Code Online (Sandbox Code Playgroud)

现在,我想使用Dictionary来跟踪数据库以及使用DatabaseItem类型返回它们的方法,如下所示:

Dictionary<Type, Database<DatabaseItem>> databases;

public static Database<T> GetDatabase<T> () where …
Run Code Online (Sandbox Code Playgroud)

c# inheritance abstract-class type-conversion type-parameter

5
推荐指数
1
解决办法
157
查看次数