C# 子对象的PropertyInfo.SetValue?

C# 子对象的PropertyInfo.SetValue?,c#,reflection,C#,Reflection,我有这样一种方法: 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

我有这样一种方法:

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.SetValue会抛出一个类型异常,因为它无法在对象Foo上设置属性测试。我无法知道当前PropertyInfo属于哪个类(这是一个奇怪的定制ORM的一部分)。有没有办法知道PropertyInfo是从哪个对象派生的?

如果您的目标是将
Bar.Test
设置为
null
,那么您可以调用以下命令:

pInfo.SetValue(myObject.Bar, 100, null);
这在语义上等同于:

myObject.Bar.Test = null;

当然,在您的示例中,这会引发一个异常,因为
myObject.Bar
null

您是说您有
Bar
的引用,而不是它的属性
Foo
?如果是这样的话,就没有办法从
Bar
获取
Foo
。我重写了这个问题,希望能让问题更清楚。。?
myObject.Bar.Test = null;