我有这样的方法:
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 是从哪个对象派生的?