在输入以下代码段时,我注意到Intellisense不能按预期工作:

StringBuilder sb = new StringBuilder();

foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(sb))
{
    var name = prop.DisplayName;
    Console.WriteLine("{0}", name);
}


在foreach语句中,如果我开始键入prop.Di,则Intellisense将按照prop.DisplayName的要求完成。但是,我使用var关键字而不是PropertyDescriptor,然后仅看到从对象继承的方法。

TypeDescriptor.GetProperties()返回TypeDescriptor的集合时,我认为Visual Studio将能够为prop推断正确的类型。

为什么不起作用?

最佳答案

GetProperties返回仅实现PropertyDescriptorCollection而不实现IEnumerableIEnumerable<PropertyDescriptor>。如果使用var,则将prop的类型推断为object而不是PropertyDescriptor

10-08 08:51