一、起因:

最近在做的一个项目,因为很多地方要用到同一套流程。为了后期维护,要求将共用流程进行抽离,创建为一个公用的类库。在抽离之前程序运行是没有问题的,然而在抽离之后就得到了如题错误: object不包含xxx的定义。 遇到这个错误时也是相当的郁闷,根本就觉得莫名奇妙,完全相同的代码,只是拿出来以类库的形式调用而已。

二、查找:

遇到问题总得想法子解决,接下来就是进行调试,调试下来就更是摸不着头脑。来看下面的两张截图。看到图一的错误,立即对products进行了监视,看到的结果却是图二这样的(哎呀,这不明明有IsOk属性吗?什么鬼...)。由于完全没有思路,无从下手,于是开始了面向百度编程,找到了这个bug的原因。

(图一)

(图二)

三、解决:

原来是匿名类型在编译后,访问修饰符是internal级别的,当跨程序集访问时就会出现如题错误(apiTL.ProductList()返回的是一个匿名类型)。这也就是为什么在抽离前程序运行是正常的(因为在同一程序集中),而抽离后报错的原因。知道了原因,就来解决它。

示例:

程序集A(匿名对象所在的程序集);程序集B(调用程序集A的方法,接收匿名对象)。那么只需要在 程序集A 的AssemblyInfo.cs中加上如下语句,意思是对指定的程序集可见(既:对程序集B可见)

[assembly: InternalsVisibleTo("程序集B")]

最新文章

  1. crucible VS gerrit
  2. C++二级指针第二种内存模型(二维数组)
  3. UnionPay,ChinaPay 最新 银联支付接口C#\Asp.net\MVC 版本
  4. mysql metadata lock锁
  5. 身份证号码自动生成程序(Python)
  6. Finally 与 return
  7. 那些情况该使用它们spin_lock到spin_lock_irqsave【转】
  8. Java关键字final、static使用总结(转)
  9. 全选Form > Grid 的所有行
  10. P1179: [Apio2009]Atm
  11. Maven POM.xml详解[转]
  12. Android聊天界面刷新消息
  13. coreldraw圆形裁剪
  14. 字符型SQL注入
  15. Python3简单的输入输出及内置函数查看
  16. prototype.js 和json.js 冲突
  17. mysql 开启root外部链接权限
  18. AIX 批量更改密码
  19. mysql 移除服务,并在cmd下切换目录
  20. mvc 缓存页面 减轻服务器压力

热门文章

  1. switch...case... 语句中的类型转换
  2. 《Python编程从入门到实践》--- 学习过程笔记(2)变量和简单数据类型
  3. [POC]K8 DLLhijack Test
  4. Vue2.5开发去哪儿网App 第三章笔记 上
  5. mac下安装rzsz
  6. 怎么样imageview实现铺满全屏
  7. Hadoop2源码分析-Hadoop V2初识
  8. j2ee高级开发技术课程第八周
  9. java开发细节问题,spring的单例模式,多线程同步问题
  10. 边界扫描(boundary scan)