如何通过反射在C#中根据属性名称(字符串)获取对象属性值?
大家好!我是C#新手,遇到了这样一个问题:我有一个`Person`类,包含几个属性(`Name`、`Age`、`Email`)。我需要编写一个方法,接收该类的对象和一个字符串——属性名称,并返回该属性的值。也就是说,例如,我传入`person`和`"Name"`,得到`"John"`。
我知道这可以通过反射(Reflection)实现,但不知道具体怎么做。以下是我尝试过的代码:
```csharp
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
static object GetPropertyValue(object obj, string propertyName)
{
// 如何在这里获取值?
// 我尝试过类似 obj.GetType().GetProperty(propertyName) 的方法,但不知道接下来该怎么做。
return null;
}
```
问题在于,我不知道如何调用属性的getter,如果我只知道它的名称作为字符串。是否需要考虑大小写?如果属性名称是