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.
Call PropertyInfo.GetIndexParameters
- if the returned array is empty, it's not an indexer.
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