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)];
}
そして、それは私に与えたDatabaseItemが抽象的であるため、エラー「『T』のパラメータとして 『T』を、それを使用するために、公共のパラメータなしのコンストラクタを持つ非抽象型でなければなりません」。私はより良い何
...
が同様questionが見つかりましたが、私はまだ理解していない...エラーがなくなって、それでも型変換エラーがたくさん出てきている、非抽象型としてDatabaseItemを作りましたこれを達成するためのソリューション/構造?
おそらくあなたDatabaseクラスのためのインタフェース、例えば 辞書を定義するには、<タイプ、するIDatabase> –