单例B初始化单例A.单例A不知道B.我们如何使用A并确保B先完成初始化程序?
B和A在不同的程序集中,由不同的团队维护。
尝试使实现完全独立。
最好的答案似乎就是不要。这就是我在想的想法:
通过实现特定接口的注册类启动初始化。如果调用DoSomething,并且T在我们之前没有见过的程序集中,那么我们将搜索具有给定IRegistration接口的类。
所以...那将摆脱依赖。它使用反射。每次调用一个方法时,我们都必须查找类型程序集home,但不一定要付出太高的代价
答案 0 :(得分:1)
我建议引入在启动时运行的非单例X,并按照你需要的顺序初始化两个单例,从而从单例中去除知道应该初始化它们的顺序的责任(这对他们来说是不合适的)知道,无论如何)。
从那里开始,我会考虑重构它们不是单身,并且通过构造函数注入将B引用给A,因为B显然依赖于A。
答案 1 :(得分:1)
您的问题所暗示的耦合程度让我对您的设计质量产生了严重怀疑。