我想知道在运行时获取定义字典的泛型参数的最佳方法是什么。
以例如:
Dictionary<string, object> dict;
如何在运行时发现密钥是字符串?
答案 0 :(得分:9)
我不确定我是否理解你的问题,但我认为你的意思是这样的:
Dictionary<string, object> dict = new Dictionary<string, object>();
// ...
var args = dict.GetType().GetGenericArguments();
// args[0] will be typeof(string)
答案 1 :(得分:1)
这是一个NUnit测试,用于演示Mehrdad的答案,以及包含整数作为键和字符串作为值的字典:
[Test]
public void testGetPhysicalTypeForGenericDictionary()
{
IDictionary<int, string> myDictionary = new Dictionary<int, string>();
Type [] myTypes = myDictionary.GetType().GetGenericArguments();
Assert.AreEqual(2, myTypes.Length);
var varTypes = myDictionary.GetType().GetGenericArguments();
Assert.AreEqual("Int32", varTypes[0].Name);
Assert.AreEqual("System.Int32", varTypes[0].FullName);
Assert.AreEqual("String", varTypes[1].Name);
Assert.AreEqual("System.String", varTypes[1].FullName);
}