gpt4 book ai didi

c# - 在 View 中访问动态匿名类型时出现 RuntimeBinderException

转载 作者:太空狗 更新时间:2023-10-29 22:22:43 26 4
gpt4 key购买 nike

我在学习/修改 asp.net 时遇到了一个奇怪的异常现象。

我正在尝试显示这样的局部 View :

@Html.Partial("_PartialView", new { Action = "Foo" })

当我尝试访问 Action 时

// Throws Microsoft.Csharp.RuntimeBinder.RuntimeBinderException
string throwsException = Model.Action;

带有消息的 RuntimeBinderException

'object' does not contain a definition for 'Action'

被抛出。
奇怪的是这条线工作正常:

// This line works fine
string works = ((Type)Model.GetType()).GetProperty("Action").GetValue(Model);

这种行为让我很困惑,我宁愿避免使用这种解决方法。我也不认为问题是 anonymous types being internal因为 VS2013 中 ASP.NET 项目的 MVC 模板成功地做到了这一点:

enter image description here

那么这里发生了什么?

最佳答案

可以在这里找到这个问题的答案:http://www.heartysoft.com/ashic/blog/2010/5/anonymous-types-c-sharp-4-dynamic

摘自优秀的博文:

匿名类型是内部的

调用 Model.Action 失败的原因是 Model 的类型信息在运行时不可用。它不可用的原因是匿名类型不公开。当该方法返回该匿名类型的实例时,它返回一个引用匿名类型实例的 System.Object - 主程序无法获得其信息的类型。动态运行时尝试在对象上找到一个名为 Action 的属性,但无法从它拥有的类型信息中解析它。因此,它会引发异常。

关于c# - 在 View 中访问动态匿名类型时出现 RuntimeBinderException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com