And*_*rke 21 c# reflection types properties
我正在反映一个属性'Blah',它的Type是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());
}
Run Code Online (Sandbox Code Playgroud)
这给了我(正如你所期待的那样!)ICollection<string>
......
但我真的想要收集类型即ICollection
(而不是ICollection<string>
) - 有谁知道我该怎么做呢?
Jos*_*rke 32
例如,您需要查看GetGenericTypeDefinition:
List<String> strings=new List<string>();
Console.WriteLine(strings.GetType().GetGenericTypeDefinition());
foreach (var t in strings.GetType().GetGenericArguments())
{
Console.WriteLine(t);
}
Run Code Online (Sandbox Code Playgroud)
这将输出:
System.Collections.Generic.List`1 [T]
System.String
SLa*_*aks 22
你正在寻找GetGenericTypeDefinition
方法:
MessageBox.Show(pi.PropertyType.GetGenericTypeDefinition().ToString());
Run Code Online (Sandbox Code Playgroud)