C# dynamic类型报错:“object”不包含“xxx”的定义
一、起因:
最近在做的一个项目,因为很多地方要用到同一套流程。为了后期维护,要求将共用流程进行抽离,创建为一个公用的类库。在抽离之前程序运行是没有问题的,然而在抽离之后就得到了如题错误: object不包含xxx的定义。 遇到这个错误时也是相当的郁闷,根本就觉得莫名奇妙,完全相同的代码,只是拿出来以类库的形式调用而已。
二、查找:
遇到问题总得想法子解决,接下来就是进行调试,调试下来就更是摸不着头脑。来看下面的两张截图。看到图一的错误,立即对products进行了监视,看到的结果却是图二这样的(哎呀,这不明明有IsOk属性吗?什么鬼...)。由于完全没有思路,无从下手,于是开始了面向百度编程,找到了这个bug的原因。

(图一)

(图二)
三、解决:
原来是匿名类型在编译后,访问修饰符是internal级别的,当跨程序集访问时就会出现如题错误(apiTL.ProductList()返回的是一个匿名类型)。这也就是为什么在抽离前程序运行是正常的(因为在同一程序集中),而抽离后报错的原因。知道了原因,就来解决它。
示例:
程序集A(匿名对象所在的程序集);程序集B(调用程序集A的方法,接收匿名对象)。那么只需要在 程序集A 的AssemblyInfo.cs中加上如下语句,意思是对指定的程序集可见(既:对程序集B可见)
[assembly: InternalsVisibleTo("程序集B")]
C# dynamic类型报错:“object”不包含“xxx”的定义的更多相关文章
- 记dynamic的一个小坑 -- RuntimeBinderException:“object”未包含“xxx”的定义
创建一个控制台程序和一个类库, 在控制台创建一个匿名对象,然后再在类库中访问它,代码如下: namespace ConsoleApplication1 { class Program { static ...
- <转>记dynamic的一个小坑 -- RuntimeBinderException:“object”未包含“xxx”的定义
→转载地址← 创建一个控制台程序和一个类库, 在控制台创建一个匿名对象,然后再在类库中访问它,代码如下: namespace ConsoleApplication1 { class Program { ...
- 记dynamic的一个小坑 -- RuntimeBinderException:“object”未包含“xxx”的定义
from:http://blog.csdn.net/feiyun0112/article/details/39697955 创建一个控制台程序和一个类库, 在控制台创建一个匿名对象,然后再在类库中访问 ...
- .net core2.1 使用 dynamic 类型报错
在net core2.0项目中使用 dynamic 无法编译通过 异常信息:缺少编译器要求的成员"Microsoft.CSharp.RuntimeBinder.CSharpArgumentI ...
- dynamic调用时报RuntimeBinderException:“object”未包含“xxx”的定义 错误
情况如下:两个项目项目A命名空间 Test.PA 匿名类型所在 项目B命名空间 Test.PB 在Test.PB 中通过dynamic关键字调用Test.PA中匿名类型时报上述错误 解决办法 在项 ...
- MFC项目中:报错:“fatal error LNK1561: 必须定义入口点”解决方法
编译的时候,报错:“fatal error LNK1561: 必须定义入口点” 解决方案1: 右键->属性->链接器->高级->入口点,设置成:WinMainCRTStartu ...
- 【spring cloud】【IDEA】【maven】spring cloud多模块在idea上使用maven插件打包报错:程序包XXX不存在
>>>>spring cloud 多模块 >>>>在idea上使用maven插件打包,欲打包成jar包后 进行部署 >>>> 报 ...
- zabbix启动报错:Connection to database 'xxx' failed解决方法
Zabbix 分布式系统监视系统 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通 ...
- 解决Python报错:local variable 'xxx' referenced before assignment(引)
解决Python报错:local variable 'xxx' referenced before assignment(引) 解决Python报错:local variable 'xxx' refe ...
随机推荐
- Python--CSV模块
CSV csv文件格式是一种通用的电子表格和数据库导入导出格式 简介 Python csv模块封装了常用的功能,使用的简单例子如下: 写入 # 写入csv文件 import csv csvfile = ...
- 【LeetCode】128. 最长连续序列
题目 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为O(n). 示例: 输入:[100, 4, 200, 1, 3, 2] 输出:4 解释:最长连续序列是[1, 2, 3, ...
- 从C#到TypeScript - 类型
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...
- windows2016 安装mysql5.7
下载msi安装包,一路下一步. 安装好后,做下简单配置. 默认的my.ini和datadir在C:\ProgramData\MySQL Server 5.7下 更改默认my.ini的方法为修改注册表 ...
- FactoryMethod工厂方法模式升级成AbstractFactory抽象工厂模式
具体参考抽象工厂(AbstractFactory)模式-创建型模式,本文在FactoryMethod工厂方法模式(创建型模式)的基础上进行业务进一步抽象,不做详细原理介绍. 1.在FactoryMet ...
- Qt中QMenu的菜单关闭处理方法
Qt中qmenu的实现三四千行... 当初有个特殊的需求, 要求菜单的周边带几个像素的阴影, 琢磨了半天, 用QMenu做不来, 就干脆自己用窗口写一个 然而怎么让菜单消失却非常麻烦 1. 点击菜单项 ...
- Android学习总结——INSTALL_FAILED_CONFLICTING_PROVIDER
在写个小demo的时候出现了这个问题: 排除手机内存不足.以及没用安装过这个应用的问题之后,发现是android:authorities="..."出了问题,可能还有其他应用程序和 ...
- SSM整合(2): spring 与 mybatis 整合
在进行完spring与springmvc整合之后, 继续 spring与mybatis的整合. 既然是操作数据库, 那必然不能缺少了连接属性 一. db.properties jdbc.driver= ...
- PTA (Advanced Level) 1009 Product of Polynomials
1009 Product of Polynomials This time, you are supposed to find A×B where A and B are two polynomial ...
- Charles在Mac中抓包使用说明
在工作期间,经过同事介绍,发现一款很强大的抓包工具Charles,现在记录下来分享给大家.常用的有以下几款功能: 1.支持配置抓取定向地址的网络请求 打开charles,打开Proxy->Rec ...