将字符串计算为C#中的属性

本文关键字:属性 字符串 计算 | 更新日期: 2023-09-27 17:59:10

我有一个存储在字符串中的属性。。。比如对象Foo有一个属性Bar,所以要获得Bar属性的值,我会调用。。

Console.Write(foo.Bar);

现在假设"Bar"存储在一个字符串变量中。。。

string property = "Bar"
Foo foo = new Foo();

如何使用property获得foo.Bar的值?

我是如何习惯在PHP中这样做的

$property = "Bar";
$foo = new Foo();
echo $foo->{$property};

将字符串计算为C#中的属性

Foo foo = new Foo();
var barValue = foo.GetType().GetProperty("Bar").GetValue(foo, null)

您将使用反射:

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

调用中的null用于索引属性,而不是您所拥有的。

您需要使用反射来完成此操作。

像这样的东西应该会照顾你

foo.GetType().GetProperty(property).GetValue(foo, null);