Identifying a custom indexer using reflection in C#

Solution 1:

You can also look for index parameters, using the the PropertyInfo.GetIndexParameters method, if it returns more than 0 items, it's an indexed property:

foreach (PropertyInfo pi in typeof(MyClass).GetProperties())
{
    if (pi.GetIndexParameters().Length > 0)
    {
       // Indexed property...
    }
}

Solution 2:

Look for the DefaultMemberAttribute defined at type level.

(This used to be IndexerNameAttribute, but they seem to have dropped it)