How to get type of TKey and TValue given a Dictionary<TKey,TValue> type

I want to get type of TKey and TValue given a Dictionary<TKey,TValue> type.

eg. If type is Dictionary<Int32,String> I want to know how to get keyType = typeof(Int32) and valueType = typeof(String)


Solution 1:

I think this may be what you are looking for:

Dictionary<int, string> dictionary = new Dictionary<int, string>();
Type[] arguments = dictionary.GetType().GetGenericArguments();
Type keyType = arguments[0];
Type valueType = arguments[1];

Ref: Type.GetGenericArguments