我有一个对象RenderComponent
,它有一个名为Model
的属性,类型为StaticModel
。当我获得PropertyInfo
的{{1}}然后在其上调用RenderComponent
时,它会给我一个TargetException,说“对象与目标类型不匹配。”
我会写一小段代码,为您提供失败的要点。这是层次结构:
GetValue()
我基本上是这样做的:
public class RenderComponent
{
StaticModel Model;
}
public class StaticModel
{
}
我的程序当然要复杂得多,但我仍然看不出它是如何失败的。我必须遗漏一些简单的东西。
我在这一行得到例外:
RenderComponent renderComponent = new RenderComponent();
PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo info in props)
{
// I get the exception here
Object value = info.GetValue(renderComponent, null);
}
其中info.GetValue(obj, null)
是info
的{{1}},PropertyInfo
是实例化的StaticModel
。当我停在这个异常并对obj进行监视时,我可以实际逐步执行层次结构,直到获得我的StaticModel值,并且它存在且具有我期望的数据。
我确定如果我使用我在这个帖子中发布的小代码示例它会正常工作,所以它必须与我在引擎中调用它的方式有关,我只是看不到GetValue如何能够当obj明显具有该值时,会失败。
这是我调试'obj'并找到StaticModel的截图:
这是我得到的错误:
在这里你可以看到obj
和RenderComponent
的值,作为我传递的对象实例是RenderComponent的证据,而我正在调用GetValue的PropertyInfo是静态模型(RenderComponent的成员,如第一张图片所示:
答案 0 :(得分:0)
为什么obj(在上一次观看截图中)有Key&值?不应该是RenderComponent?我认为您传递的是KeyValuePair而不是RenderComponent实例