带有 DI、存储库和
WinForms N-Tier App with DI, Repository and
我正在构建一个简单的 winforms 应用程序,我正在使用 n 层架构、依赖注入(使用简单注入器)、Entity Framework 代码优先、存储库和工作单元模式。
- UI层。
- 表格。
- 业务逻辑层。
- 业务对象 "Managers"(类 公开业务流程)。
- 数据访问层
- 存储库。
- 数据库上下文。
基本上,我知道我可以在应用程序入口点 (Program.cs) 的容器上注册对象,但这仅适用于可从 UI 访问的对象,这排除了数据访问图层对象。
那么,我如何从业务逻辑层注册对象,因为它是一个 class 库。
提前致谢。
您需要区分依赖项和引用。
您说 UI 不应依赖于 DataAccessLayer 是正确的。但这意味着它不应该硬连接到 SQL 服务器代码(举个例子)。但是,这并不意味着您不能引用该项目。
要解决您的问题,只需引用您 UI 中的所有项目(这将是您申请的入口点)。
事实是,如果您创建这样的引用:UI => 业务逻辑 => 数据访问,您还间接引用了 UI 中的数据层。
我已经写了一篇 post 关于这个的文章,其中更详细地解释了它:
https://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/
我正在构建一个简单的 winforms 应用程序,我正在使用 n 层架构、依赖注入(使用简单注入器)、Entity Framework 代码优先、存储库和工作单元模式。
- UI层。
- 表格。
- 业务逻辑层。
- 业务对象 "Managers"(类 公开业务流程)。
- 数据访问层
- 存储库。
- 数据库上下文。
基本上,我知道我可以在应用程序入口点 (Program.cs) 的容器上注册对象,但这仅适用于可从 UI 访问的对象,这排除了数据访问图层对象。
那么,我如何从业务逻辑层注册对象,因为它是一个 class 库。
提前致谢。
您需要区分依赖项和引用。
您说 UI 不应依赖于 DataAccessLayer 是正确的。但这意味着它不应该硬连接到 SQL 服务器代码(举个例子)。但是,这并不意味着您不能引用该项目。
要解决您的问题,只需引用您 UI 中的所有项目(这将是您申请的入口点)。
事实是,如果您创建这样的引用:UI => 业务逻辑 => 数据访问,您还间接引用了 UI 中的数据层。
我已经写了一篇 post 关于这个的文章,其中更详细地解释了它:
https://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/