2016-05-21 8 views
0

別のクラスの特定のクラスのテンプレートを使用できますか?C#外部クラスのテンプレートタイプを使用

例:

class DBObject<DataType> 
{ 
    private string _name; 
    private DataType _value; 

    public DBObject() 
    { 
     _name = String.Empty; 
    } 

    public DBObject(string name) 
    { 
     this._name = name; 
    } 

    public DataType GetValue 
    { 
     get { return _value; } 
     set { _value = value; } 
    } 
} 

DataTypeは、私は私のTestTblクラスDBObject<DataType>要素を含むクラスにDBObject

を使用していますテンプレートです。

class TestTbl : DBTableObjects 
{ 
    public DBObject<int> _id; 
    DBObject<string> _name; 
    DBObject<string> _address; 

    TestTbl() 
    { 
     AddDBTableObject(_id = new DBObject<int>("id")); 
    } 
} 

AddDBTableObject機能はDBTableObjectsクラスにListに要素を追加します。

class DBTableObjects 
{ 
    List<DBObject> ls; 

    public DBTableObjects() 
    { 
     ls = new List<DBObject>(); 
    } 

    protected void AddDBTableObject(DBObject obj) 
    { 
     ls.Add(obj); 
    } 
} 

問題:List<DBObject>DBObject例えばtemplatetypeが必要です。ここでDBObjectクラスのDataTypeを使用するにはどうすればよいですか?

+0

DBTableObjects を使用しないのはなぜ? – CodeNotFound

答えて

1

問題は、それが一般的なする必要がありますList<DBObject> ls;である:

class DBTableObjects 
{ 
    List<DBObject<int>> ls; 

    public DBTableObjects() 
    { 
     ls = new List<DBObject<int>>(); 
    } 

    protected void AddDBTableObject(DBObject<int> obj) 
    { 
     ls.Add(obj); 
    } 
} 
+0

これは私が考えていたものですが、一般的な定義を使用するつもりですが、例えば、 '' –

+0

'TestTbl 'は 'TestTbl 'に匹敵します。それは単なる命名です。制約は 'DataType:struct'のように' – user3185569

+0

'DBObject _name;'と 'DBObject _id; 'を使って同じタイプをしているのでしょうか、間違っていますか?もしそうなら、それは問題だから。私は、異なる変数に異なるタイプが必要です。 –

関連する問題