JavaScriptSerializerはnull値のエラーを発生させるため、独自のメソッドを作成してオブジェクトグラフをカスタムオブジェクトに変換しています。今PropertyInfo.SetValue()は動作しませんがエラーはありません
internal static T ParseObjectGraph<T>(Dictionary<string, object> oGraph)
{
T generic = (T)Activator.CreateInstance<T>();
Type resType = typeof(T);
foreach (PropertyInfo pi in resType.GetProperties())
{
object outObj = new object();
if (oGraph.TryGetValue(pi.Name.ToLower(), out outObj))
{
Type outType = outObj.GetType();
if (outType == pi.PropertyType)
{
pi.SetValue(generic, outObj, null);
}
}
}
return generic;
}
pi.SetValue()
メソッドの実行、およびエラーが発生しませんが、私はgeneric
の性質を見たときにそれがあったとして、それはまだ同じです:
は、これは私がこれまで持っているものです手前に。値がSetValue
メソッドを実行した後に続いて、generic.property
がまだfalseに設定されている。この
generic = an object of type MyCustomType
generic.property = false
outObj = true
pi = boolean property
outType = boolean
ように終わるよう
それが経由する最初のプロパティはbooleanです。
無関係ですが、 'generic.GetType()'は私のベンチマークの 'typeof(T)'よりも優れたパフォーマンスを持っています。 'Activator.CreateInstance'の結果をキャストする理由もなく、既に 'T'のインスタンスを返します。 –
ありがとう、私はそれらのものを変更します。また私は偶然に答えを見つけました。 –
これをデバッグする必要があります。 if(outType == pi.PropertyType)は意味をなさない、あなたが何をしようとしているのかを伝えることはできません。 –