gpt4 book ai didi

c# - 定制的 Autofac 模块应该驻留在哪个程序集中?

转载 作者:太空狗 更新时间:2023-10-29 17:49:50 25 4
gpt4 key购买 nike

我有一个像这样设置的 C# 应用程序:

[Assembly-ConsoleApp] --References--> [Assembly-Domain] 
/
[Assembly-FileAccess] --References-->---------/

基本上,我的大部分接口(interface)和一些具体类都可以在 Domain 程序集中找到,许多具体实现可以在 FileAccess 程序集中找到。 ConsoleApp 程序集使用 Domain 程序集而不引用 FileAccess 程序集。

我已经创建了一个 autofac FileAccess 模块,用于将 FileAccess 实现与 Domain 接口(interface)以及直接在 Domain 程序集中的任何具体类连接起来。我的问题是把这个模块放在哪里。从最佳实践的角度来看,模块应该放在 FileAccess 程序集中(这需要我添加对 autofac 程序集的引用/依赖)还是应该放在 ConsoleApp 程序集中>(它使用模块并且已经具有 autofac 依赖性)?或者只有给定模块的完全独立的程序集是否有意义?

谢谢

最佳答案

容器只能从应用程序的 Composition Root 中引用,在您的例子中是指 ConsoleApp 程序集

这确保包含应用程序逻辑的程序集不依赖于任何特定的 DI 容器。

可以还可以在单​​独的程序集中实现该模块并从组合根中加载它,但是由于该程序集(ConsoleApp)仍然需要对 Autofac 的引用,因此这样做不会有太多收获.这在一定程度上取决于所讨论的场景,但除非您创建的 ISV 应用程序作为(实际上)压缩包装软件的一部分提供给许多不受控制的客户,否则几乎不值得付出努力。

关于c# - 定制的 Autofac 模块应该驻留在哪个程序集中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8228944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com