繁体   English   中英

使用反射访问私有成员

[英]Using Reflection for Accessing Private Members

短篇故事。 我参与的一个项目中的某个人决定使用反射从另一个DLL访问另一个类的成员。 为什么? 懒惰。 我有一个好习惯(坏吗?),请在检入文件之前消除所有Resharper警告。 有一天,我看到一个私有成员在它所属的类中的任何地方都没有使用过...所以,shift + delete之后该成员消失了。 两个月后,我们的一个生产基地出现了一场风潮。 我们花了一个星期的时间才发现问题是反射代码找不到私有成员,并且包装代码不够好。 碰巧的是,这也是我们的自动测试未涵盖的场景。

您建议在哪种代码分析工具中为此类用例设置规则?

谢谢

没有工具,因为没有办法在DLL方面对此进行测试。

保留某些方法为公共方法而保留某些方法为私有方法的原因是,您可以拥有消耗DLL的人可以使用的已发布合同。 您在DLL内部执行的操作应该是一个黑匣子,任何人都不应该对所发生的事情有任何了解或关心。

对此进行“测试”的唯一方法是在调用方为任何使用反射的函数编写沼泽标准单元测试。 然后,您必须确保DLL的出厂版本与进行单元测试的版本匹配。

至于使用反思的人,请他证明自己的理由,如果不是,则将其缓刑,要求他提交的所有代码都必须经过更彻底的审查,然后才能被检入。如果他不停止这样做(要么在绝对不应该使用反射时使用它,要么不为必须使用反射来确保自己正在调用的代码在内部未发生更改的代码编写单元测试, 否则将被解雇

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM