2009-06-11 76 views

回答

9

我不知道如果我正確地理解你的問題,但我想你的意思是這樣的:

Dictionary<string, object> dict = new Dictionary<string, object>(); 
// ... 
var args = dict.GetType().GetGenericArguments(); 
// args[0] will be typeof(string) 
+0

爲此乾杯,你確實理解我的問題,它寫得很差第一次。 – MrEdmundo 2009-06-11 17:16:49

1

這裏有一個NUnit測試證明邁赫達德的答案,並用包含整數作爲鍵的字典,並字符串作爲值:

 [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); 
     } 
相關問題