在输入以下代码段时,我注意到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
而不实现IEnumerable
的IEnumerable<PropertyDescriptor>
。如果使用var
,则将prop
的类型推断为object
而不是PropertyDescriptor
。