2
我想知道在運行時獲取定義字典的泛型參數的最佳方式是什麼。C#在運行時獲取定義字典的類型
舉個例子:
Dictionary<string, object> dict;
如何在運行時我可以找出密鑰是字符串?
我想知道在運行時獲取定義字典的泛型參數的最佳方式是什麼。C#在運行時獲取定義字典的類型
舉個例子:
Dictionary<string, object> dict;
如何在運行時我可以找出密鑰是字符串?
我不知道如果我正確地理解你的問題,但我想你的意思是這樣的:
Dictionary<string, object> dict = new Dictionary<string, object>();
// ...
var args = dict.GetType().GetGenericArguments();
// args[0] will be typeof(string)
這裏有一個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);
}
爲此乾杯,你確實理解我的問題,它寫得很差第一次。 – MrEdmundo 2009-06-11 17:16:49