【发布时间】:2013-01-02 18:56:30
【问题描述】:
我有这样的方法:
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 是从哪个对象派生的?
【问题讨论】:
-
您是说您有
Bar的引用,但没有Foo的属性?如果是这样的话,就没有办法从Bar得到Foo。 -
我重写了问题以使问题更清楚,希望..?
标签: c# reflection