WinForms N-Tier应用程序与DI,仓库和

本文关键字:DI N-Tier 应用程序 WinForms | 更新日期: 2023-09-27 18:03:37

我正在构建一个简单的winforms应用程序,我使用n层架构,依赖注入(简单注入器),实体框架代码优先,存储库和工作单元模式。

  • UI层。
  • 业务逻辑层。
    • 业务对象"管理器"(类公开业务流程)。
  • 数据访问层
    • 库。
    • 数据库上下文。

基本上,我知道我可以在应用程序的入口点(Program.cs)的容器上注册对象,但这只适用于从UI访问的对象,这排除了数据访问层对象。

那么,我如何从业务逻辑层注册对象,因为它是一个类库。

WinForms N-Tier应用程序与DI,仓库和

您需要区分依赖项和引用。

你说你的UI不应该依赖于你的DataAccessLayer是正确的。但这意味着它不应该硬连接到SQL Server代码(举个例子)。但这并不意味着你不能引用那个项目。

要解决您的问题,只需从您的UI(这将是您的应用程序的入口点)引用所有项目。

事实是,如果你像这样创建引用:UI => Business Logic => Data Access,你也从UI引用了数据层,只是间接的。

我已经写了一篇文章,详细解释了这一点:

https://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/