2014-02-06 33 views
4

當我打電話Type.GetProperties排除性能與運營商[]

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

我也得到與[]運算性能。因此,例如我有:

MyType 
-> Property1 
-> Property2[string] 

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

如何排除運營商的屬性?

我寧願它通過bindingflags發生,但迭代通過PropertyInfo後字將是好的,但我不能看到任何PropertyInfo類,指示它是否有一個操作符。

回答

4

我不認爲有任何BindingFlags值從一開始就排除它們,但您可以使用PropertyInfo.GetIndexParameters()過濾屬性:如果屬性未編制索引,則它沒有索引參數。

4

您可以使用LINQ來解決這個問題:

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

如果你打算無論如何要使用LINQ,然後'道具=> prop.GetIndexParameters()任何()'看起來更好給我!。 – hvd