Имя свойства и нужно его значение - PullRequest
1 голос
/ 28 апреля 2009

У меня есть имя свойства, и мне нужно найти его значение в классе. Какой самый быстрый способ получить это значение?

Ответы [ 5 ]

14 голосов
/ 28 апреля 2009

Я предполагаю, что у вас есть имя свойства во время выполнения; не во время кодирования ...

Предположим, что ваш класс называется TheClass и у него есть свойство TheProperty:

object GetThePropertyValue(object instance)
{
    Type type = instance.GetType();
    PropertyInfo propertyInfo = type.GetProperty("TheProperty");
    return propertyInfo.GetValue(instance, null);
}
2 голосов
/ 28 апреля 2009

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

var prop = obj.GetType().GetProperty("PropertyName");
var propValue = prop.GetValue(obj, null);

Надеюсь, это поможет.

1 голос
/ 28 апреля 2009

Если вы заинтересованы в скорости на времени выполнения , а не в разработке, взгляните на работы Джона Скита "Размышление и изучение делегатов" сообщение в блоге.

0 голосов
/ 28 апреля 2009

Во время выполнения вы можете использовать отражение, чтобы получить значение свойства.

Два предостережения:

  • Обфускация: обфускатор может измениться Наименование имущества, которое сломает эту функциональность.

  • Рефакторинг: Использование отражения в этом манера делает код более сложным рефакторинг. Если вы измените имя собственности, возможно, вам придется искать случаи, когда вы используете отражение, чтобы получить значение свойства на основании имени.

0 голосов
/ 28 апреля 2009

Просто используйте название объекта. Если это свойство допускает обнуление (например, int? Property), используйте property.Value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...