带有DI,Repository和的WinForms N-Tier应用程序

时间:2016-08-23 22:09:35

标签: c# winforms dependency-injection n-tier-architecture

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

  • UI图层。
    • 形式。
  • 业务逻辑层。
    • Business Objects“Managers”(公开业务流程的类)。
  • 数据访问层
    • 存储库。
    • 数据库上下文。

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

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

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

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

事实是,如果你创建这样的引用:UI =>业务逻辑=>数据访问,您也只是间接地从UI引用数据层。

我已经写了一篇关于这一点的文章,它更详细地解释了它:

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