我有一个对象实例。在Object的构造函数中,我希望允许用户传入一个字典,用来初始化一些(如果不是全部)对象的属性。现在,我不想使用条件,我想要做的是使用反射,反映对象实例中包含的属性,并且如果属性名称映射到字典中的键,则使用相应的值更新属性值在字典中。反射初始化对象实例的属性值使用
在此工作中,我有以下代码,但它不会更新我的对象实例的值。希望有一些帮助,让这个工作,请?
public void Initialize()
{
if (Report.GlobalParameters != null)
{
PropertyInfo[] propertyInfos = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo propertyInfo in propertyInfos)
{
if (Report.GlobalParameters.ContainsKey(propertyInfo.Name))
{
Type type = this.GetType();
PropertyInfo property = type.GetProperty(propertyInfo.Name);
property.SetValue(this, Report.GlobalParameters[propertyInfo.Name], null);
}
}
}
}
该对象的示例会很好(只显示“不更新我的对象实例的值”的属性)。在后期简化抽样以使用硬编码名称和价值也是一个好主意。 –
我已经试过你创建的Person对象上的代码,它运行良好,没有问题?! –
谢谢,我查了一下,现在看起来工作正常。不知道我改变了什么。谢谢。 – Kobojunkie