get_PropertyName () / set_PropertyName () против PropertyName? - PullRequest
1 голос
/ 03 декабря 2010

Я использую отражение в сборке общедоступного API, с которым я работаю вместе с System.CodeDOM, чтобы сгенерировать некоторый код, который будет извлекать информацию через API.

В части моего автоматически сгенерированного кодаЯ ссылаюсь на значения ряда свойств типов в сборке API.Тем не менее, я продолжаю получать ссылки на свойства, которые на самом деле не существуют в моем сгенерированном коде.Я использовал Type.GetProperties(), который из того, что я понимаю, должен возвращать только публичные свойства.

Я изучил его далее и обнаружил, что когда у меня было пропущенное свойство, скажем, под названием SampleProperty, вместо этого в классе было два метода.называется get_SampleProperty и set_SampleProperty, но не имеет фактического свойства SampleProperty.

Что здесь происходит?Почему intellisense рассматривает эти методы как отдельные методы, но когда при возврате через отражение они отображаются как свойство?

1 Ответ

5 голосов
/ 03 декабря 2010

Я использовал PropertyInfo.GetProperties (), который, насколько я понимаю, должен возвращать только открытые свойства.

Это может быть ваше первое зависание, класс PropertyInfo неМетод GetProperties.Класс Type делает.В противном случае ваш вопрос указывает, что вы на самом деле используете Type.GetMethods ().Да, это возвращает методы доступа к свойству get_Blah и set_Blah для свойства.Под капотом свойства фактически реализованы как методы.

Используйте Type.GetProperties () для отражения свойств.

...