保持类型本身而不是字典中的实例

时间:2017-02-15 08:05:31

标签: c# dictionary generics types

GridParserPointParser类来自Parser类。我怎么能把它们自己键入字典而不是它们的实例?它甚至可能吗?

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

1 个答案:

答案 0 :(得分:4)

使用typeof运算符获取对象类型,然后将其存储在字典中。

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

<强>更新 根据下面的问题作者评论:在您创建字典后,您需要一个类型的实例,您可以使用Activator class这样的:

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