C# 如何通过反射设置对象属性
我正在尝试编写一个方法,该方法将接受以下3个参数:C# 如何通过反射设置对象属性,c#,reflection,C#,Reflection,我正在尝试编写一个方法,该方法将接受以下3个参数: 对象(用户定义的类型会有所不同) 表示该对象的属性名称的字符串 字符串值,必须在赋值之前将其从字符串转换为属性的数据类型 方法签名如下所示: public void UpdateProperty(Object obj, string propertyName, string value) 我发现了如何使用以下代码通过反射检索属性值: PropertyInfo[] properties = target.GetType().GetPropert
public void UpdateProperty(Object obj, string propertyName, string value)
我发现了如何使用以下代码通过反射检索属性值:
PropertyInfo[] properties = target.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo prop in properties)
{
if (string.Compare(prop.Name, propertyName, true) == 0)
{
return prop.GetValue(target, null).ToString();
}
}
问题是我不知道如何设置属性值。此外,值是以字符串的形式输入的,因此我必须根据属性的数据类型检查值的数据类型,然后才能对其进行强制转换和分配
如有任何帮助,我们将不胜感激。的帮助应该适合您。使用您的代码:
newValue = Convert.ChangeType(givenValue, prop.PropertyType);
prop.SetValue(target, newValue, null);
SetValue是您正在寻找的 这里有很多问题和示例代码(请查看本页右侧的相关问题列表)
e、 g.在没有第三个参数(null)的情况下,这不是为我编译的,然后它出现了“TypeConverter无法从System.String转换”的错误。我不确定。无论哪种情况,我都需要尝试转换到特定的数据类型(prop.PropertyType)。奥斯汀,你就是那个人!这很有效。我使用var作为newValue的类型声明(newValue=Convert.ChangeType(givenValue,prop.PropertyType);)
prop.SetValue(target,new TypeConverter().ConvertFromString(propertyValue));