我见过的所有洋葱架构示例都在 ASP.NET MVC 应用程序的上下文中。他们倾向于通过将 IoC 设置放在基础结构 DLL 中并使用一些魔法(HttpModule 或 WebActivator)使 IIS 在正确的时间执行该设置代码来避免 UI 和服务实现(基础结构)之间的直接引用。
就我而言,我正在开发一个 Windows (TopShelf) 服务,并且正在努力解决如何使服务控制项目与基础设施项目完全分离。没有像在 IIS Web 应用程序中那样挂钩的执行管道。
我能想到的最好的方法是让服务项目扫描 IoC 注册表/模块类的 DLL,但这似乎仍然不那么干净。
有任何想法吗?