当我打电话
Type.GetProperties(BindingFlags.Public | BindingFlags.Instance)
我也使用[]运算符获取属性。例如,我有:
MyType
-> Property1
-> Property2[string]
返回的PropertyInfo列表包含Property1或Property2。
如何使用运算符排除属性?
我希望它通过bindingflags发生,但是迭代后通过PropertyInfo迭代会没问题,但我在PropertyInfo类上看不到任何指示它是否有运算符的东西。
答案 0 :(得分:4)
我认为没有任何BindingFlags
值可以从一开始就排除它们,但您可以使用PropertyInfo.GetIndexParameters()
来过滤属性:如果属性未编入索引,则它没有索引参数。
答案 1 :(得分:4)
您可以使用LINQ解决此问题:
Type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(prop => prop.GetIndexParameters().Length == 0);