我的应用程序需要能够存储来自登录模块的连接字符串,以供应用程序中的所有其他模块使用,其中大约有 50 个。我最初打算通过广播和订阅新的/更改的连接字符串事件来使连接字符串可用,但是由于 50 个模块中的大多数/全部是按需加载的,因此它们在登录过程中无法订阅该事件,因为它们是登录过程后加载。根据我的理解,我需要一种不同的方法来使连接字符串可用。
然后我考虑将连接字符串放在 shell 中并尝试将其公开给任何加载的模块,但我找不到一种方法来做到这一点,而不会破坏 MVVM 模式并引入不需要的依赖项。
如果有人知道实现上述两个选项中的任何一个的方法,我会很想知道它是否可以在遵循 MVVM 模式的同时完成。
我现在在想,最好的方法是对连接字符串使用单例的一些变体作为共享服务。我希望 Unity Container 能够存储连接字符串,并且我可以使用服务定位器在任何模块中访问它,但我不知道该怎么做。MEF 和/或 Silverlight 中有任何性质相似的示例。 有没有人在 WPF 中这样做过,或者有一个如何编写连接字符串单例并将其添加到 Unity 容器的示例?指南、教程或一些代码片段将不胜感激!
注意:我在后端使用 Prism 和 Unity、Oracle,应用程序将部署在 Citrix 服务器上(以安全的名义,他们阻止开发人员写入 app.config),这就是为什么我不能使用这种方法. 当多个用户从 Citrix 运行应用程序时,使用 Singleton 作为连接字符串也会导致问题吗?每个用户都有自己的单例连接字符串吗? 如果不是,那么我的整个问题都会改变,是否有一种好方法可以用来传递/保留所有模块之间的连接字符串?