- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在将对象作为动态参数传递时,我遇到了意外的 RuntimeBinderInternalCompilerException。
我将尝试解释该场景,因为它涉及面太广,无法轻松粘贴代码。我正在使用 Roslyn 进行一些非常奇怪的黑客攻击,所以这听起来很奇怪。
这种动态传递应该有效,因为类型是兼容的:即,在我的例子中,我可以保证它具有功能匹配的方法/类型。
但是当我去执行 changed+reloaded 方法时,它接收到一个动态类型的对象,我得到了这个异常。
RuntimeBinderInternalCompilerException was unhandled.
An unexpected exception occurred while binding a dynamic operation
根据 MSDN:
Exceptions of this kind differ from RuntimeBinderException in that RuntimeBinderException represents a failure to bind in the sense of a usual compiler error, whereas RuntimeBinderInternalCompilerException represents a malfunctioning of the runtime binder itself.
谷歌对此绝对没有结果。我也不知道如何进一步调试它。有什么建议吗?
(我确实做了一些沙盒测试,以确保我可以在运行时将不同的程序集加载到测试应用程序中,并将来自不同程序集的实例类型传递给接受动态参数的单个方法。所以它在那种情况下确实有效。)
最佳答案
没有更多细节很难回答这个问题,但是阅读你所说的内容,有几点需要注意:
在内部,所有类型名称都是完全限定的。这意味着如果您尝试将两种类型视为相同类型,编译器将拒绝您的代码,除非它们来自同一个程序集,具有相同的命名空间和名称。在 .Net 中获取稍微不同的类型以进行网格划分是很棘手的。
dynamic
并不总是如您直觉所想的那样有效。如果您正在使用编译器,那么非常值得学习 IL 的工作原理,并查看您的代码和基类库代码以了解它们如何交互。
用于低级 .Net 工作的一个非常有用的工具是 ILSpy:http://ilspy.net/
关于c# - 动态调用时出现 RuntimeBinderInternalCompilerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12156037/
在将对象作为动态参数传递时,我遇到了意外的 RuntimeBinderInternalCompilerException。 我将尝试解释该场景,因为它涉及面太广,无法轻松粘贴代码。我正在使用 Rosl
使用目标平台设置为以下之一的 Sql Server Data Tools 项目: SQL Server 2008 SQL Server 2012 SQL Server 2014 并部署到 (local
我是一名优秀的程序员,十分优秀!