Отражение c# - Находит Универсальный Тип Набора

Я отражаю свойство 'Blah', его Тип является ICollection

    public ICollection<string> Blah { get; set; }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        var pi = GetType().GetProperty("Blah");
        MessageBox.Show(pi.PropertyType.ToString());
    }

Это дает мне (как Вы ожидали бы!) ICollection<string> ...

Но действительно я хочу получить тип набора т.е. ICollection (а не ICollection<string>) - кто-либо знает, как я сделал бы это?

21
задан Matt Davis 1 April 2010 в 14:29
поделиться

2 ответа

Вы ищете GetGenericTypeDefinition метод:

MessageBox.Show(pi.PropertyType.GetGenericTypeDefinition().ToString());
22
ответ дан 29 November 2019 в 06:49
поделиться

Вы можете посмотреть GetGenericTypeDefinition , например:

   List<String> strings=new List<string>();


        Console.WriteLine(strings.GetType().GetGenericTypeDefinition());
        foreach (var t in strings.GetType().GetGenericArguments())
        {
            Console.WriteLine(t);

        }

Это выведет:

System.Collections.Generic.List`1 [T]
System.String

32
ответ дан 29 November 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: