使用反射访问私有成员

本文关键字:成员 访问 反射 | 更新日期: 2023-09-27 18:34:09

短篇小说。我参与的一个项目中的某个人决定使用反射从另一个 DLL 访问另一个类的成员。为什么?懒惰。我有一个好(坏?(习惯,在签入文件之前消除所有Resharper警告。有一天,我看到一个私人成员在它所属的班级中没有被使用......因此,Shift+删除,成员就消失了。两个月后,我们的一个生产基地出现了一个亮点。我们花了 1 周时间才发现问题是反射代码找不到私有成员并且包装代码不够好。碰巧的是,这也是我们的自动测试未涵盖的场景。

您推荐哪种代码分析工具,我可以在哪里为此类用例设置规则?

谢谢

使用反射访问私有成员

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

将某些方法保留为公共方法而某些方法是私有的原因是,您可以拥有使用 DLL 的人员可以使用的已发布协定。您在 DLL 内部执行的操作应该是一个黑匣子,没有人应该知道或关心正在发生的事情。

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

至于使用反射的人,让他证明他的理由,如果不是统计局,就把他留校察看,要求他提交的所有代码在允许签入之前都要经过更彻底的审查。如果他不停止做这样的事情(要么在他绝对不应该的时候使用反射,要么不为他的代码编写单元测试,必须使用反射来确保他调用的代码在内部没有改变(,他应该被解雇