2

有什么方法(我希望利用反射)可以使实例化对象及其所有公共属性不可变?我有一个来自其他人的代码库(没有可用源)的类,我需要使用它,如果任何地方的任何代码在实例化后尝试调用该类中的公共设置器,我基本上希望抛出异常。

注意:我不想在类周围创建一个包装对象来实现这一点。我很懒。

4

2 回答 2

11

我很难相信你愿意引入反射代码来做一些可以用包装类简单解决的事情。

现在,当您的反射代码中断或需要修改时,您现在投入的少量时间将为您节省大量痛苦的时间。包装类简单、易于实现、类型安全,并且对未来的其他开发人员有意义。不要让懒惰决定你的架构选择。

于 2009-07-13T17:47:56.873 回答
6

不,没有通过反射。类型定义不能在运行时通过反射更改,因此它不能用作使类型不可变的设备。

但是反射可以用来破坏类型的不变性。例如,可以在构造函数运行很久之后通过反射设置标记为只读的属性。

于 2009-07-13T17:49:06.247 回答