Aop RealProxy 千年遇BUG

昨夜一名CYQ.Data 框架爱好者在测试V5Beta版本时,向我发一个问题, 说F5下正常,直接运行exe会报错,于是,一夜深究后,就有了今天的博文。

 

当你运行一段代码、一个软件,在运行时你发现:Debug下正常, Release下F5运行也正常,唯独Release编绎后单独运行异常,你会怎么想?

 

这个问题对我而言,脑海里不曾有过,于是蛋定思蛋,先百度了一下:发现网上信息并不多,偶尔几条也是VC++的,对于C#的,绝无仅无。

 

 

 

当我把代码发给一友人,让他也帮忙试下时,发现对方的win7 64位竟然运行正常,灵异性又提升了一个等级。

 

面对这神一般的灵异Bug,我费了N个小时折腾,找一个不能调试的Bug,因为F5下都是正常的,那个辛苦啊。

 

灵异现象已经说了,那灵异点是什么呢?标题已经出卖了这个问题,和Aop的RealProxy有关。

 

光说AOP,园子里懂的人不多,用的估计也不多,所以深入无谓,浅出又难,只好简单过过场。 

 

我是怎么发现问题是在Aop RealProxy?

这个使用常规方法,在代码段里插一些弹出信息,来缩小出错的代码片断,最终找到了它。

 

为了减少废话,这里直接讲述两点:

 

1:哪些代码有问题,哪里有问题?

以前我写过一篇文章:C# Aop简单扫盲及ORM实体类属性拦截示例,可以先理解下AOP,但是它是有问题的,就是今天的问题。

这里给出详细的错误代码,和注释错误点,代码通常都有点长,不容易看:

View Code 

 

通常大量的代码测试及分析方法,我发现了,只要Aop对象涉及到内部成员变量,在Release编绎后运行就一定会报错。

 

2:如何解决。 

在历经各种无解后,我发现了,RealProxy还有另一种写法,而这另一种写法,竟然可以解决这个问题,代码如下:

View Code 

 

 

3:Debug和Release还有F5,究竟隐藏怎样的秘密? 

我也不懂,这涉及更底层的问题,不在我深究的范围内,懂的人士可以留言给大伙解答下。

 

总结:

 

在编程的世界里,灵异总是无处不在的,但是找它灵异的原因,并且能找到一种解决这类事件的方法,是每个代码建造师必须具有能力。
至于为何会产生这样那样的灵异事件,在研究的范围内,可以追究原因,在非自身研究的领域,大伙看着办了。 

 

 

终于,在忙碌微博精灵系列软件的日子里,终于又抽空完成了一篇文章,感觉不容易啊。


时间: 2024-09-12 05:23:01

Aop RealProxy 千年遇BUG的相关文章

罗马尼亚3百个浙商店铺被查封3千商铺遇困

一名华商欲进入尼罗市场深处,但被防暴警察拦住. 杨德月 摄 "300多家商铺被封已经很多天了,这些店铺再关下去估计客商都跑了."昨天,一位在罗马尼亚布加勒斯特市经商的温州商人不无忧虑地告诉记者. 从11月24日开始,罗马尼亚布加勒斯特市有关部门,对当地华商集中经营的尼罗市场进行了检查,并查封了部分商铺. 有5000多家商铺的尼罗市场内,其中有3000多家为浙江商人在经营,销售以服装类和家电类为主的小商品.此次事件中,尼罗市场内不仅有300多个浙商经营的店铺被查封,另外3000多家浙商商

ORM数据层框架的设计热点:更新指定的列的几种设计方案

ORM框架的定义:对象-关系映射(Object/Relation Mapping,简称ORM) 常见的是:数据库结构=>映射Object(实体属性)=>基于实体类的操作. 还有一种:数据库结构=>映射Object(内存表结构)=>基于内存表的操作. 当然,如果你有创意,你还能创造出更多的映射载体来实现ORM. 避免思维定式:  由于思维定式,很多开发者,只有见到基于实体类映射,才会认为是一种ORM框架,于是很少人去思考其它映射载体来实现ORM. 这个思维定式,和早期在ASP.NET

CYQ.Data 轻量数据层之路 bug反馈、优化建议、最新框架下载

重要说明: 所有相关的版本及下载,均转移并发布于秋色园QBlog的CYQ.Data专题博客中:http://www.cyqdata.com/cyqdata   欢迎大伙在使用过程若遇bug可及时反馈,如果有好的建议,请留言!!!   相关开源进群讨论:详见:CYQ.Data 轻量数据层之路 框架开源 所有信息汇总一览:详见:CYQ.Data 轻量数据层之路 框架开源系列 索引    V1.3版本[华丽的开始] 框架下载:V1.3 版本 点击下载 源码下载:V1.3 源码 点击下载   V1.4版

菜鸟站长处理网站BUG的二点建议

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 新站的建设到运营总是披满荆棘,在每一次次站长努力背后的目的就是建造一个满足网站用户和满足自己的网站平台,而站长们努力背后的故事就是一堆网站BUG的由来到解决.任何一个网站站长总是需要不同用户的建议与提醒,这些建议和提醒对于我们站长来说就是一堆网站BUG,网站运营团队是网站的核心,如何让自己队伍统一快速提交网站BUG,这个问题显得重要却又艰难,

触摸未来的QQ概念版设计

QQ 概念版经过一年的秘密研发,终于掀开了她的神秘面纱,向世人展现了她的真实面目,做为一个全新的产品,以及内部封闭秘密研发的众多因素,可能很多人想了解这个QQ概念版的研发设计过程以及产品的设计理念,在这里我们将带你全面的了解QQ概念版 这款产品的研发设计过程,也和大家一起分享我们项目团队的研发设计经验. 1.项目背景 QQ同时在线过"亿",腾讯开始正式步入"亿"时代,正在大家沉浸在喜悦以及自豪的同时,我们一款全新的概念产品将破茧而出,因为我们知道过"亿&q

视觉设计:触摸未来的QQ概念版设计

QQ 概念版经过一年的秘密研发,终于掀开了她的神秘面纱,向世人展现了她的真实面目,做为一个全新的产品,以及内部封闭秘密研发的众多因素,可能很多人想了解这个QQ概念版的研发设计过程以及产品的设计理念,在这里我们将带你全面的了解QQ概念版 这款产品的研发设计过程,也和大家一起分享我们项目团队的研发设计经验. 1.项目背景 QQ同时在线过"亿",腾讯开始正式步入"亿"时代,正在大家沉浸在喜悦以及自豪的同时,我们一款全新的概念产品将破茧而出,因为我们知道过"亿&q

oracle数据库如何打补丁

给软件打补丁相当于给人打预防针,对系统的稳定运行至关重要.本文详细.系统地介绍了Oracle数据库补丁的分类.安装.管理等问题. 厂商提供给用户的软件补丁的形式多为编译后的库函数,所以安装软件补丁实际上就是把这些库函数拷贝到相应目录,并在需要时进行联接操作.软件公司一般在一段时间后会把针对某一版本的所有补丁进行整理:合并融合,解决冲突,进行整体测试,并使文件拷贝和联接操作自动执行,得到一个软件补丁"包 ".不同的公司使用不同的名称,现在一般计算机用户都熟悉的Windows Servic

通过可视化数据分析提升测试质量

某位高人曾说过:日复一日地重复着既有的测试,然后被类似的Bug折磨得无可奈何,不如稍作停顿,分析总结找到Bug的源头,以除之.本篇文章我们就来聊聊如何通过可视化的数据进行分析,进而提升测试质量. 为了让产品的质量可度量.可视化,我们可以建立一些指标数据,以帮助我们发现产品质量的各种问题,比如:被测功能模块发现Bug太晚,某位开发同学的代码质量一直很低,某个功能总是在兼容性方面存在大量问题等.有了问题之后,我们就可以有针对性地进行改进,有的放矢,从而使得被测产品的质量逐步改善.以搜狗的项目为例,我

微软张宏江:工程水平决定创新能力

作者:刘湘明 在研究环境里,无所谓成功和失败,而做工程.做产品,最后只有一个衡量--这个产品最后在市场上能不能卖出去? 虽然中国号称盛产工程师,虽然我国的教育体系被认为最适合培养工程师,但是,其实"工程"这个词在中国是被完全忽视的.尚文|摄 中国企业拥有世界上最强大的低成本制造体系,拥有最有潜力的广阔市场以及最灵活最本土化的营销体系,现在又有越来越多的企业把创新提到战略高度,开始大力发展自己的研发和设计能力.但是中国企业依然很难持续制造出成功的产品.在一个产品从最初的设计定义,到最终按