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;