Avatar ·

如何通过反射在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); ``` 但如果属性不存在,这会报错。如何正确处理这种情况?有没有更安全的方法?提前感谢!