如何在Dictionary <int,string =“”>?</int,>中获取类型

时间:2014-08-04 06:54:54

标签: c#

要求是这样的。现在我有一本词典。

Dictionary<int,string> dic = new Dictionary<int,string>();
//... some other operations
Type t = typeof(Dictionary<int,string>);

现在我想得到int和string类型。我怎么能得到这两个?非常感谢你。

更新

感谢您的回复。实际上我的要求是基于两种类型创建另一个泛型类,这两种类型是从字典类型中获得的。就像这样。

PropertyType propertyType = typeof(Dictionary<int,string>);
if (propertyType.Name.Contains("Dictionary"))
{
    Type keyType = propertyType.GetGenericArguments()[0];
    Type valueType = propertyType.GetGenericArguments()[1];
    propertyType = typeof(SerializableDictionary<keyType, valueType>);
}
//And after this, it will dynamically create a class and add the propery as one
//of its properties

现在我无法使用propertyType = typeof(SerializableDictionary<keyType, valueType>)。我该如何更新此声明?谢谢。

1 个答案:

答案 0 :(得分:5)

这是一个片段:

Type keyType = t.GetGenericArguments()[0];
Type valueType = t.GetGenericArguments()[1];

更新

var typeOfNewDictonary = typeof(SerializableDictionary<,>)
                               .MakeGenericType(new[] 
                                           { 
                                               keyType, 
                                               valueType 
                                           });

顺便说一句: 以下行错误:

PropertyType propertyType = typeof(Dictionary<int,string>);

应该是:

Type propertyType = typeof(Dictionary<int,string>);

更重要的是,if (propertyType.Name.Contains("Dictionary"))中的条件毫无意义。它始终被评估为true