我有一个对象实例。在对象的构造函数中,我想允许用户传入一个字典来初始化对象的一些(如果不是全部)属性。现在,我想做的不是使用条件,而是使用反射,反映对象实例中包含的属性,如果属性名称映射到字典中的键,则使用相应的值更新属性值在字典中。
在处理这个问题时,我有以下代码,但它不会更新我的对象实例的值。希望能得到一些帮助以使其正常工作吗?
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);
}
}
}
}