Jas*_*own 9 c# dependency-injection inversion-of-control autofac
我有这样的ac#应用程序设置:
[Assembly-ConsoleApp] --References--> [Assembly-Domain]
/
[Assembly-FileAccess] --References-->---------/
Run Code Online (Sandbox Code Playgroud)
基本上,我的大多数接口和一些具体类都可以在Domain程序集中找到,其中包含FileAccess程序集中的许多具体实现.ConsoleApp程序集使用Domain程序集而不引用FileAccess程序集.
我创建了一个autofac FileAccess模块,用于将FileAccess实现与Domain接口连接,以及直接在Domain程序集内部的任何具体类.我的问题是在哪里放这个模块.从最佳实践的角度来看,模块应该在FileAccess程序集中(这需要我在autofac程序集上添加引用/依赖项),还是应该在ConsoleApp程序集中(它使用模块并且已经具有autofac依赖性) )?或者只是具有给定模块的完全独立的组件是否有意义?
谢谢
只应从应用程序的Composition Root引用容器,在您的情况下,这意味着ConsoleApp程序集.
这可确保包含应用程序逻辑的程序集不受任何特定DI容器的依赖.
您还可以在单独的程序集中实现该模块,并从Composition Root加载该模块,但由于该程序集(ConsoleApp)仍需要对Autofac的引用,因此这样做并不多.这取决于相关场景,但除非您创建的ISV应用程序作为一个(虚拟)收缩包装的软件发送给许多不受控制的客户,否则很少值得付出努力.
| 归档时间: |
|
| 查看次数: |
662 次 |
| 最近记录: |