.net - 使用反射来改变实现

标签 .net reflection private-members

我的老板认为自己是 OOP 大师,而我则认为他是业余程序员。他负责我们的 Sage 开发,为我们客户的 Sage 安装添加自定义要求。他最近对反射(reflection)感到非常兴奋,他正在代码中反射(reflection) Sage 的程序集并更改私有(private)成员和事件处理程序。我认为这不是一个好主意,但他驳斥了我,说圣人认为他能做到这一点真是太棒了。我认为这是不好的做法,因为它效率低下,而且如果他们在任何时候改变其实现,我们的代码都可能崩溃。我的意思是,通常开发人员出于某种原因将某些内容设为私有(private),对吗?

这方面的一般规则是什么?

非常感谢,如果这看起来是一个愚蠢的问题,我们深表歉意。

保罗

最佳答案

你是对的。如果您依赖于第 3 方库的实现细节,那么您最好准备好在第 3 方库更新时重写所有内容,并准备好在您使用某些“无害”值更改某些私有(private)变量时出现意外的副作用。

答案是,只有当您 100% 确定自己正在做的事情并且准备好面对后果时才这样做。

关于.net - 使用反射来改变实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3617109/

相关文章:

go - 检查 Go 中的结构类型

c# - 如何使基础架构代码仅在命名空间中可见?

java - 为什么嵌套类的子类无法访问嵌套类的私有(private)字段?

c# - 我必须处理 Polly 中的异常,我需要将结果集中的数据与 Cosmos 数据库中的数据进行比较,然后重试

c# - 跨程序集边界返回/使用动态匿名类型

.net - 如何判断类型 A 是否可隐式转换为类型 B

c# - 我可以使用 PrivateObject 类或 Reflection 来访问私有(private)类中的字段吗?

java - 无需获取/设置即可访问私有(private)属性(property)

.net - 仅使用 PowerShell 将新文件从 FTP 目录下载到本地文件夹

c# - 'clr-namespace' URI 指的是未包含在程序集中的命名空间