繁体   English   中英

C#获取在运行时定义Dictionary的类型

[英]C# get the types defining a Dictionary at run time

我想知道在运行时获取定义字典的泛型参数的最佳方法是什么。

举个例子:

Dictionary<string, object> dict;

在运行时如何才能发现键是字符串?

我不确定我是否理解你的问题,但我认为你的意思是这样的:

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

这是一个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);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM