Я отражаю свойство '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>
) - кто-либо знает, как я сделал бы это?
Вы ищете GetGenericTypeDefinition
метод:
MessageBox.Show(pi.PropertyType.GetGenericTypeDefinition().ToString());
Вы можете посмотреть 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