оценивать строку как свойство в C # - PullRequest
6 голосов
/ 16 июня 2011

У меня есть свойство, хранящееся в строке ... скажем, у объекта Foo есть свойство Bar, поэтому для получения значения свойства Bar я бы назвал ..

Console.Write(foo.Bar);

Теперь скажите, что у меня "Bar" хранится в строковой переменной ...

string property = "Bar"

Foo foo = new Foo();

как бы получить значение foo.Bar, используя property?

Как я это делаю в PHP

$property = "Bar";

$foo = new Foo();

echo $foo->{$property};

Ответы [ 3 ]

7 голосов
/ 16 июня 2011
Foo foo = new Foo();
var barValue = foo.GetType().GetProperty("Bar").GetValue(foo, null)
2 голосов
/ 16 июня 2011

Для этого нужно использовать отражение.

Как-то так должно заботиться о тебе

foo.GetType().GetProperty(property).GetValue(foo, null);
2 голосов
/ 16 июня 2011

Вы бы использовали отражение:

PropertyInfo propertyInfo = foo.GetType().GetProperty(property);
object value = propertyInfo.GetValue(foo, null);

null в вызове есть для индексированных свойств, а это не то, что у вас есть.

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