创建一个控制台项目和一个类库项目, 在类库中创建一个匿名对象,然后在控制台中访问它,代码如下:

控制台:

namespace ConsoleApplication1
{class Program{static void Main(string[] args){dynamic dyc = ClassLibrary1.TestClass.Test();Console.WriteLine(dyc.Id);Console.ReadKey();}}
}

类库:

namespace ClassLibrary1
{public class TestClass{public static dynamic Test(){return new { Id=1, Name="Test" };}}
}

编译没有问题,但是运行时抛出异常:
“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的未经处理的异常在 System.Core.dll 中发生
其他信息: “object”未包含“Id”的定义
Id属性是肯定存在的,那问题出在哪呢?
让我们用ILDasm查看程序,会发现其实声明的匿名类型是internal级别的。


而internal只能在同一程序集中访问。在运行时,dynamic想找到在另一个程序集中的internal类型的属性,自然会报错。
知道原因,解决起来就很简单了,只需要在当前程序集的AssemblyInfo.cs中加上

[assembly: InternalsVisibleTo("ConsoleApplication1")]  

出处:http://www.cnblogs.com/feiyun0112/p/4002291.html作者:feiyun0112

[转载]dynamic的小坑--RuntimeBinderException:“object”未包含“xxx”的定义相关推荐

  1. “EventArgs”未包含“ColumnIndex”的定义,并且找不到可接受第一个“EventArgs”类型参数的可访问扩展方法“ColumnIndex”(是否缺少 using 指令或程序集引用?)

    禁止显示状态 错误    CS1061    "EventArgs"未包含"ColumnIndex"的定义,并且找不到可接受第一个"EventArgs ...

  2. leetcode小坑 ‘int’ object has no attribute ‘val‘

    表面上报错是第23行代码,实际上是第26行代码出了问题.修改后 惭愧没通过所有测试用例

  3. net core3.1 版本 解决错误 ConfigurationBuilder”未包含“SetBasePath”的定义

    nuget 引用以下三个包 Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.FileExtensions M ...

  4. Excel催化剂开源第13波-VSTO开发之DataGridView控件几个小坑

    Excel催化剂内部大量使用了DataGridView,这其中有一些小坑,花了力气才解决的,在此给广大开发者作简单分享. 为何要使用DataGridView而不是其他控件如ListBox.ListVi ...

  5. mciSendString 的两个小坑

    刚刚修正了自己用的小闹钟的代码. 坑1:REPEAT 选项的作用范围 原来用得好好的,之后选择 .wav 文件,居然不出声音了-- 诶,MCI 肯定支持 .wav 的啊-- 仔细想想,我以前都是选 . ...

  6. java 小坑_关于Java子父类关系的小坑

    原标题:关于Java子父类关系的小坑 学过JavaSE的都知道java类在初始化的时候,如果存在直接父类,是先初始化父类,然后才初始化子类. 子类拥有父类所有的非私有化成员,非私有的成员不仅仅包括pu ...

  7. C#中的Infinity有个小坑

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 昨天家里有事,上网也不方便,就没有推送文章.今天很累,也不长篇大论了.简单介绍一下最近遇到的 ...

  8. net core 小坑杂记之配置文件读取(不定期更新)

    其实很早就想写了,原想等积累差不多了再写的,但是发现遇到一个当时记下效果会比较好,所以就不定期更新这个系列了,后面获取会整个整理一下. 此篇记载net core入门时踩的一些坑,网上教程太少了,也不规 ...

  9. [LeetCode]29 两数相除和一个小坑点

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符.返回被除数 dividend 除以除数 divisor 得到的商.示例 1:输入: ...

最新文章

  1. 阿里巴巴测试环境稳定性提升实践
  2. C++_pthread read-write lock_读写锁_visual studio 2015下配置
  3. java中Collections的接口及类层次图
  4. 用c语言读取和写入文件数据
  5. scala Akka并发编程介绍
  6. “约见”面试官系列之常见面试题第七篇说说Vue的生命周期(建议收藏)
  7. Javascript与C#中使用正则表达式
  8. 5G产业最新投资机会,25页PPT
  9. Listview 的应用 Day04 2014-0605
  10. C语言volatile的本质(三十四)
  11. 合成分红游戏源码_ThinkPHP宠物养成合成类游戏APP陀螺世界程序源码 已优化
  12. MT 3DGIS 试用版本开发包及教程下载地址
  13. 分贝、电平、增益、音高、音分、声能、声强、声压...
  14. k8s使用volume将ConfigMap作为文件或目录直接挂载_【大强哥-k8s从入门到放弃06】Secret详解...
  15. 【她的心你伤的起吗?】
  16. 【Python】打印出所有的“水仙花数”
  17. libxml2生成,解析,修改xml文件,以及使用实例
  18. 进程和线程的区别 进程间的通信方式
  19. 批量的十六进制转字符串(ASCII码) shell脚本
  20. 红米k30可以用鸿蒙系统吗,红米K30遭狙击:挖孔双摄+麒麟990+鸿蒙OS系统 华为5G强势来袭...

热门文章

  1. 【蔡勒公式 】根据给定的年月日求出对应星期几
  2. 【IT界的厨子】酱香鲈鱼
  3. [HNOI2009]梦幻布丁
  4. content-type对照表
  5. HDU-5895 Mathematician QSC
  6. tomcat 启动时内存溢出
  7. 一个比较笨的全文搜索的例子(分析结构用)-模糊查找
  8. MapReduce操作HBase
  9. 您不能不知的ToString()方法
  10. Flex 学习随笔 ---- 玩 Chart