Type.GetProperties使用operator []排除属性

时间:2014-02-06 20:56:14

标签: c# .net

当我打电话

Type.GetProperties(BindingFlags.Public | BindingFlags.Instance)

我也使用[]运算符获取属性。例如,我有:

MyType
-> Property1
-> Property2[string] 

返回的PropertyInfo列表包含Property1或Property2。

如何使用运算符排除属性?

我希望它通过bindingflags发生,但是迭代后通过PropertyInfo迭代会没问题,但我在PropertyInfo类上看不到任何指示它是否有运算符的东西。

2 个答案:

答案 0 :(得分:4)

我认为没有任何BindingFlags值可以从一开始就排除它们,但您可以使用PropertyInfo.GetIndexParameters()来过滤属性:如果属性未编入索引,则它没有索引参数。

答案 1 :(得分:4)

您可以使用LINQ解决此问题:

Type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(prop => prop.GetIndexParameters().Length == 0);