2009-06-11 8 views
2

実行時に辞書を定義するという一般的な引数を得るための最良の方法は何か不思議でした。C#実行時に辞書を定義する型を取得する

は例を見てみましょう:

Dictionary<string, object> dict; 

を私はキーが文字列であることをどのように実行時にを見つけることができますか?

答えて

9

私は私が正しくあなたの質問を理解するが、私はあなたがこのような何かを意味すると思うかはわからない:

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

あなたは私の質問を理解していましたが、最初は不十分です。 – MrEdmundo

1

をここでMehrdadの答えを実証するために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); 
     } 
関連する問題