PropertyInfo:属性是索引器吗?

时间:2011-01-20 10:52:00

标签: c# .net reflection propertyinfo

我有以下代码:

PropertyInfo[] originalProperties = myType.GetProperties();

我想从originalProperties中排除所有索引器(myVar [“key”]显示为名为“Item”的属性)。

什么是正确的方法?

排除propInfo.Name == "Item"不可选的所有属性。

2 个答案:

答案 0 :(得分:70)

调用PropertyInfo.GetIndexParameters - 如果返回的数组为空,则它不是索引器。

答案 1 :(得分:0)

另一个选择是使用:

myType.GetProperties().Except(myType.GetDefaultMembers().OfType<PropertyInfo>());

GetDefaultMembers将以C#返回所有编译器生成的索引器。这样做的好处是,无需思考每个属性就可以找出哪些是索引器。

这可能不是所有允许的.NET框架语言的通用解决方案,但我目前不知道有任何反例。