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);
}
}
}
}