要求是这样的。现在我有一本词典。
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>)
。我该如何更新此声明?谢谢。
答案 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
。