C # получить типы, определяющие словарь во время выполнения

2

Мне было интересно, какой лучший способ получить общие аргументы, определяющие словарь во время выполнения.

Возьмем, например:

Dictionary<string, object> dict;

Как во время выполнения я могу узнать, что клавиши являются строками?

Теги:
generics
type-parameter
types

2 ответа

9
Лучший ответ

Я не уверен, правильно ли понимаю ваш вопрос, но, думаю, вы имеете в виду что-то вроде этого:

Dictionary<string, object> dict = new Dictionary<string, object>();
// ...
var args = dict.GetType().GetGenericArguments();
// args[0] will be typeof(string)
  • 0
    Приветствую вас, вы поняли мой вопрос, он был написан плохо в первый раз.
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);
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню