如何获取Dictionary<;int,字符串>;

本文关键字:lt int gt 字符串 Dictionary 何获取 获取 | 更新日期: 2023-09-27 18:16:09

需求如下。现在我有了一本字典。

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

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

更新:

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

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>)。我应该如何更新此声明?非常感谢。

如何获取Dictionary<;int,字符串>;

下面是一个片段:

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