2017-02-15 59 views
1

GridParserPointParser類從Parser類派生。我怎樣才能讓他們自己鍵入字典裏面而不是他們的實例呢?它甚至有可能嗎?保持類型本身而不是字典中的實例

public class GridParser : Parser {} 
public class PointParser: Parser {} 
var _dictionary = new Dictionary<int, Type> 
{ 
    { 1 , GridParser }, 
    { 2 , PointParser } 
}; 
+0

我沒有此時的實例。 – Vahid

+3

使用'typeof()'。例如:'{1,typeof(GridParser)},' –

回答

4

使用typeof運算符獲取對象類型,然後將其存儲在字典中。

public class GridParser : Parser {} 
public class PointParser: Parser {} 
var _dictionary = new Dictionary<int, Type> 
{ 
    { 1 , typeof(GridParser) }, 
    { 2 , typeof(PointParser) } 
}; 

UPDATE 根據以下問題筆者評論:以後你創建你想從一個類型的實例字典,你可以使用Activator class這樣的:

var t = _dictionary[0]; 
var some_var = (object)Activator.CreateInstance(t); 
//Or dynamically 
dynamic myDynVar = Activator.CreateInstance(t); 
+0

我想我以一種錯誤的方式提出了這個問題。我希望能夠將這些類存儲在字典中並按需訪問並使用它們的方法。但我不明白上述方法可能如何。例如'var t = _dictionary [1]; t.Create();' – Vahid

相關問題