我正在尝试修复我最近在我们的某些软件中遇到的设计缺陷,而无需重新编写整个软件。有一个 .exe 具有一个消息侦听器线程,该线程从某个服务器接收数据,然后将其写入一个单独的 DLL 中的类(我们称之为 StaticDataClass),该类存储它接收到的所有数据(大部分是静态的)在启动时从数据库中提取)。此类还提供其他类可用于检索数据的方法。问题是存储(设置)方法都是公共的,因此任何其他类都可以覆盖这些数据并破坏整个应用程序。除了可执行文件本身包含的对象之外,我有什么好方法可以保护所有对象的数据(使 set/store 方法不可见)?
现在我正在玩弄一个只定义公共 getter 的接口,然后让一个单例类实现该接口,然后 Instance 属性将返回接口类型,因此他们将只能使用接口中声明的 get 方法. 但是当可执行文件启动时,它会以某种方式获得对 StaticDataClass 对象而不是接口类型的实际引用,因此它也能够调用 store/set 方法。
这并不完全证明,但它可以防止一些不熟悉系统的开发人员认为可以使用这些公共存储方法,因为 Visual Studio 智能型使它们在编码时可见。相反,他们将不得不尝试通过将对象转换为包含存储方法的类型来打破它。
有没有更清洁的方法来做到这一点?