我希望能够根据用户输入的字符串确定选择了哪个类属性,其中字符串是类属性之一的名称。
例如
string userInput = "PropertyName";
string newValue = "some value";
MyClass c = new MyClass();
c.PropertyName = newValue;
但我不知道如何以这种方式通过名称定位自定义类的属性。
任何人都可以建议实现这一目标的最简洁的方法。
我希望能够根据用户输入的字符串确定选择了哪个类属性,其中字符串是类属性之一的名称。
例如
string userInput = "PropertyName";
string newValue = "some value";
MyClass c = new MyClass();
c.PropertyName = newValue;
但我不知道如何以这种方式通过名称定位自定义类的属性。
任何人都可以建议实现这一目标的最简洁的方法。
使用反射:
var prop = c.GetType().GetProperty(userInput,BindingFlags.Public | BindingFlags.Instance)
if(prop != null && prop.CanWrite)
{
prop.SetValue(c,newValue,null);
}
感谢您提供通过反射设置属性的链接
我能够使用以下内容来实现我的目标
PropertyInfo propertyInfo = c.GetType().GetProperty(userInput);
propertyInfo.SetValue(c, Convert.ChangeType(newValue, propertyInfo.PropertyType), null);