我有一個對象實例。在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