记dynamic的一个小坑 -- RuntimeBinderException:“object”未包含“xxx”的定义
来源:互联网 发布:淘宝数据魔方在哪找 编辑:程序博客网 时间:2024/05/17 05:14
创建一个控制台程序和一个类库, 在控制台创建一个匿名对象,然后再在类库中访问它,代码如下:
namespace ClassLibrary1{ public class TestClass { public void Test(dynamic obj) { Console.WriteLine(obj.Id); } }}
编译没有问题,但是运行时会提示
“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的未经处理的异常在 System.Core.dll 中发生
其他信息: “object”未包含“Id”的定义
Id属性是肯定存在的,那问题出在哪呢?
让我们用ILDasm查看程序,会发现其实声明的匿名类型是internal级别的。
而internal只能只有在同一程序集中访问。在运行时,dynamic想找到另一个程序集中的internal类型的属性,自然会报错。
知道了原因,解决起来就很简单了,只需要在当前程序集的AssemblyInfo.cs中加上
[assembly: InternalsVisibleTo("ClassLibrary1")]
指定对指定程序集可见即可。
0 0
- 记dynamic的一个小坑 -- RuntimeBinderException:“object”未包含“xxx”的定义
- Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: “object”未包含“get_Range”的定义
- “object”未包含“get_Range”的定义
- object 未包含get_range的定义
- E小cel 异常 “object”未包含“get_Range”的定义 解决方案
- 写入EXCEL “object”未包含“get_Range”的定义
- IFeatureBuffer.set_Value出现错误:“object”未包含“set_Value”的定义
- asp.net 将数据导入到excel中 出现 “object”未包含“get_Range”的定义
- C#将数据导入到excel中 出现 “object”未包含“get_Range”的定义报错
- VS2013中Winform导出Excel文件时报“object”未包含“get_Range”的定义解决方法
- C#将数据导入到excel中 出现 “object”未包含“get_Range”的定义
- Resources中未包含。。。的定义
- 头文件包含的一个小细节
- ARCGIS开发中类型XXX在未被引用的程序集中定义的解决办法。
- 如何获取一个未在php中定义的类
- C\C++小知识: 如何引用一个已经定义过的全局变量 与 全局变量可不可以定义在可被多个.C文件包含的头文件中
- 一个.java源文件包含多个类及内部类的定义?
- var, object, dynamic的区别及使用
- zoj 2112Dynamic Rankings(树状数组套splay)
- nmap -- module 'openssl' not found
- 用jar 文件代替java文件编译
- shall的用法
- 法规及南方供暖价格和没结过婚没结过婚
- 记dynamic的一个小坑 -- RuntimeBinderException:“object”未包含“xxx”的定义
- 动态规划:最大连续子序列乘积
- Jabberd2:安装和管理指南
- 【转】AWK 简明教程
- 高房价那个回复那几个海绵女价格和没干嘛
- glassflish服务器
- 解决 Xcode 不能在被 include 的 .cpp 中打断点的问题
- 体感编程系列(一)Kinect开发入门理论知识点概述
- 功甫帖纪念封同一个家体育馆和没见过