メソッドを使用して、リフレクションでオブジェクト プロパティ値を設定しようとしていますpropertyInfo.SetValue()
が、「オブジェクトがターゲット タイプと一致しません」という例外が発生します。文字列置換値を使用してオブジェクトに単純な文字列プロパティを設定しようとしているだけなので、(少なくとも私には!) 本当に意味がありません。コード スニペットは次のとおりです。これは再帰関数内に含まれているため、さらに多くのコードがありますが、これが要点です。
PropertyInfo fieldPropertyInfo = businessObject.GetType().GetProperties().FirstOrDefault(f => f.Name.ToLower() == piecesLeft[0].ToLower());
businessObject = fieldPropertyInfo.GetValue(businessObject, null);
fieldPropertyInfo.SetValue(businessObject, replacementValue, null);
businessObject" and
true を返したこの比較を行うことで、 replacementValue` が両方とも同じ型であることを確認しました。
businessObject.GetType() == replacementValue.GetType()