0

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

            }
        }
4

2 に答える 2