Ответ 1
Вызвать PropertyInfo.GetIndexParameters
- если возвращаемый массив пуст, это не индекс.
У меня есть следующий код:
PropertyInfo[] originalProperties = myType.GetProperties();
Я хочу исключить из originalProperties
все индексы (myVar [ "key" ] появляется как свойство с именем "Item" ).
Каков правильный способ?
Исключить все свойства, в которых propInfo.Name == "Item"
не является параметром.
Вызвать PropertyInfo.GetIndexParameters
- если возвращаемый массив пуст, это не индекс.
Другой вариант заключается в использовании:
myType.GetProperties().Except(myType.GetDefaultMembers().OfType<PropertyInfo>());
GetDefaultMembers
вернет все сгенерированные компилятором индексаторы в С#. Преимущество этого состоит в том, что нет необходимости отражать каждое отдельное свойство, чтобы выяснить, какие из них являются индексаторами.
Возможно, это не общее решение для всех разрешенных языков .NET Framework, но я в настоящее время не знаю каких-либо контрпримеров.