此时我有一个动态抽象工厂,其中包含类Factory的单例实现,我存储了所有工厂。每个工厂都有自己的类型,可以创建实例。
这些工厂还获得了我创建的RegisterType方法,以便从该项目外部注册类型(DLL)。
我想从项目外部注册一个类型。但是为了做到这一点,ProjectA和projectB必须知道彼此的信息。
所以我的问题是,projectA和projectB如何在不收到此错误的情况下了解彼此"对引用的循环依赖"。
答案 0 :(得分:0)
This blog post from Steve Smith直接解决了我的问题。
重新阅读您的问题,我发布的链接不相关,因为您正在处理2个项目。
对于大多数项目(网络,桌面,甚至大多数api),您通常有一个项目是您的入口点,您的其他项目应该包含相关代码或基础设施代码,应该没有2个双向(或者更多)项目。
使用IoC框架并注册依赖项可能是合适的,您可以在ProjectA中执行此操作,并从ProjectB提供给您的工厂类型。
确保在将这些工厂(和其他类型)传递到ProjectB中时使用接口进行抽象,其中实现驻留在ProjectA中,然后这些接口可以位于ProjectB中,不需要任何向后依赖。