मैं एक आधार अमूर्त वर्ग और उसके सार प्रकार पैरामीटर है के रूप में:हैंडलिंग कक्षाएं सार वर्ग और प्रकार पैरामीटर से निहित
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 {}
...
अब, मैं डेटाबेस को ट्रैक रखने के लिए शब्दकोश डालना चाहता हूं और डेटाबेस इटैम प्रकार का उपयोग करके उन्हें वापस करने के लिए एक विधि,
Dictionary<Type, Database<DatabaseItem>> databases;
public static Database<T> GetDatabase<T>() where T: DatabaseItem {
return databasebases [typeof (T)];
}
तो यह दिया मुझे क्योंकि DatabaseItem सार है त्रुटि " 'टी' एक सार्वजनिक parameterless निर्माता के साथ एक गैर सार प्रकार है ताकि इसे पैरामीटर के रूप में 'टी' का उपयोग करने में होना चाहिए"। मैं DatabaseItem गैर सार प्रकार के रूप में किया जाता है, त्रुटि चला गया है, लेकिन अभी भी प्रकार रूपांतरण त्रुटियों के बहुत बाहर आ गया ...
मिले एक समान question लेकिन मैं अभी भी समझ में नहीं आता ...
क्या बेहतर है समाधान प्राप्त करने के लिए समाधान/संरचना?
शायद अपने डाटाबेस वर्ग के लिए एक इंटरफेस, जैसे शब्दकोश परिभाषित करने के लिए <प्रकार, IDatabase> –