PropertyInfo: является ли свойство индексатором? - PullRequest
42 голосов
/ 20 января 2011

У меня есть следующий код:

PropertyInfo[] originalProperties = myType.GetProperties();

Я хочу исключить из originalProperties все индексаторы (myVar ["key"] отображается как свойство с именем "Item").

Как правильно?

Исключить все свойства, где propInfo.Name == "Item" не вариант.

Ответы [ 2 ]

71 голосов
/ 20 января 2011

Вызов PropertyInfo.GetIndexParameters - если возвращаемый массив пуст, это не индексатор.

1 голос
/ 15 января 2019

Другой вариант - использовать:

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

GetDefaultMembers вернет все сгенерированные компилятором индексаторы в C #.Преимущество этого заключается в том, что нет необходимости отражать каждое отдельное свойство, чтобы выяснить, какие из них являются индексаторами.

Возможно, это не общее решение для всех разрешенных языков платформы .NET, но в настоящее время я не знаюлюбых контрпримеров.

...