gpt4 book ai didi

c# - 不了解在系统架构中的何处创建 IoC 容器

转载 作者:可可西里 更新时间:2023-11-01 08:41:50 26 4
gpt4 key购买 nike

假设我有以下 4 个 .net 程序集:

  1. Winforms 用户界面
  2. 业务逻辑
  3. SQL Server 数据访问(实现 IRepository)
  4. 通用接口(interface)(IRepository 等的定义)

我的业务逻辑 (2) 使用构造函数依赖注入(inject)通过 IRepository(在 4 中定义)调用数据访问层 (3)。然而,当我创建一个业务对象时,我需要传入一个实际的存储库。我通过在我的业务逻辑层中使用一个单例类来返回当前正在使用的实现 IRepository 的具体对象来实现这一点。我得出的结论是这是一件坏事,因为我的业务逻辑层现在必须引用 3 和 4。

我想我需要一个 IoC 容器,但问题是我在哪里创建/放置它,因为看起来我在哪里创建它(1 - UI)?还需要持有对 3(SQL Server 数据访问)的引用。我是否只是在转移问题而不是实现实际的解耦?

我是否在 UI 中创建 IoC 容器?或者通过另一个新程序集公开它。

(我正在使用 C#、.net 3.5 和 AutoFac)

谢谢。

最佳答案

IoC 容器通常应在宿主项目(应用程序入口点)中创建。对于 exe 项目的 Windows.Forms 应用程序。

一般在简单的解决方案中(10 个项目以下),只有一个宿主项目应该引用 IoC 库。

附言:Structuring .NET Applications with Autofac IoC

关于c# - 不了解在系统架构中的何处创建 IoC 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/536994/

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