Right now, I have: targetType.GetMethod("get_Item", BindingFlags.Instance)
Is there anything better?
I prefer to use PropertyInfo.GetIndexParameters
:
var indexers = targetType.GetProperties(bindingFlags)
.Where(p => p.GetIndexParameters().Any());
.Select(p => p.GetGetMethod());
Now indexers
is an IEnumerable<MethodInfo>
of the getters of the indexers that match the specified BindingFlags
given in bindingFlags
.
Note how the code reads like from the targetType
, get the properties that match the bindingFlags
, take those that are an indexer, and then project to the getter. It is much less mysterious than using the magic string "get_Item"
, and multiple indexers are handled easily.
If you know there is only one, you could of course use Single
. If you are looking for a specific one of many, you can inspect the result of GetIndexParameters
accordingly.