如何通过反射在C#中根据属性的字符串名称获取其值?
大家好!我是C#新手,遇到了这样一个问题:我有一个Person类的对象,想要动态获取其属性的值,但属性名称是以字符串形式传递的。例如,用户输入"Name"或"Age",我需要返回相应的值。
这是我的类:
```csharp
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
```
我创建了一个对象:
```csharp
var person = new Person { Name = "Иван", Age = 30, City = "Москва" };
string propertyName = "Name"; // 或 "Age", "City"
```
如果我只知道字符串"Name",如何获取person.Name的值?我听说过反射,但不知道如何应用。我尝试过类似这样的代码:
```csharp
var value = person.GetType().GetProperty(propertyName).GetValue(person);
```
但如果属性不存在,这会报错。如何正确处理这种情况?有没有更安全的方法?提前感谢!