私はこのような方法を持っています:
var foo = new Foo();
MapObject(myMap, foo);
private void MapObject(Dictionary<string, PropertyInfo> map, object myObject)
{
foreach(var key in map.Keys)
{
int someValue = myDataSet.GetValue(key);
PropertyInfo pInfo = map[key];
pInfo.SetValue(myObject, someValue, null);
}
}
問題は、PropertyInfo が myObject の子クラスにあるプロパティを参照する場合があることです。例えば:
class Foo
{
Bar b { get; set; }
}
class Bar
{
string Test { get; set; }
}
これが発生すると、PropertyInfo.SetValue は、オブジェクト Foo にプロパティ Test を設定できないため、型例外をスローします。現在の PropertyInfo がどのクラスに属しているかを知る方法はありません (奇妙なカスタム ORM の一部です)。PropertyInfo がどのオブジェクトから派生したかを知る方法はありますか?