【发布时间】:2011-07-27 15:54:42
【问题描述】:
我的 Unity 和引导加载程序存在严重问题。这是一个循环引用。
让我解释一下我目前的情况:
MainApp (winforms)
ServiceLayer - C# 项目
DependencyInjection - 容器的 C# 项目
Bootloader - 用于引导加载程序的 C# 项目,用于为 automapper 和 Unity 进行映射。
现在 bookloader 引用了所有内容,即服务、容器等 mainApp(winforms),它的工作做得很好。
问题是我像这样从我的 MainApp (winforms) 启动引导加载程序
DI.Container.RegisterType<IBootstrapper, Bootstrapper>(
new InjectionConstructor(DI.Container));
var bootstrapper = DI.Container.Resolve<IBootstrapper>();
bootstrapper.StartUp();
现在的问题如下,MainApp 需要对 Bootloader 的引用,因为那是类和接口所在的位置 - 但我不能,因为 Bootloader 有对 MainApp 的引用,因为引导加载程序注册了 mainapp 中的一些内容.
我想我在某个地方感到困惑,主要想法是将引导程序从 mainapp 移到它自己的程序集中,并且容器也有自己的程序集; bootstrapper 需要它的所有引用,包括对 MainApp 的引用,但 Mainapp 当然需要对 bootstrapper 的引用来创建和启动它。
编辑
我当然可以通过直接访问容器来注册 mainapp 中的类型,但这不会破坏让我的引导加载程序处理所有事情的目标吗?
【问题讨论】:
标签: c# dependency-injection unity-container ioc-container circular-dependency