PropertyInfo : is the property an indexer?

[亡魂溺海] 提交于 2019-11-28 02:24:22

问题


I have the following code :

PropertyInfo[] originalProperties = myType.GetProperties();

I want to exclude from originalProperties all the indexers (myVar["key"] appears as property named "Item").

What is the proper way ?

Exclude all properties where propInfo.Name == "Item" is not an option.


回答1:


Call PropertyInfo.GetIndexParameters - if the returned array is empty, it's not an indexer.




回答2:


Another option is to use:

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

GetDefaultMembers will return all the compiler generated indexers in C#. This has the advantage of not needing to reflect on each individual property in order to find out which ones are indexers.

This might not be a general solution for all allowed .NET framework languages, but I am currently not aware of any counter-examples.



来源:https://stackoverflow.com/questions/4746188/propertyinfo-is-the-property-an-indexer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!