【问题标题】:Using Interfaces among multiple Projects ASP.Net在多个项目 ASP.Net 之间使用接口
【发布时间】:2018-07-10 02:04:00
【问题描述】:

我有一个包含多个库的项目。我遇到的问题是我无法从其他库访问某些库,因为当我添加引用时,我收到有关循环依赖的错误。我假设我需要创建一个界面,但我不确定如何构建它。这是我所拥有的一个例子: 我的参考是这样设置的:

  1. WebApp(这是一个 ASP.Net 网站)- 引用了 BusinessLayer 类库和实用程序类库

  2. 数据类库(此库提供抽象数据库功能)- 没有参考

  3. BusinessLayer 类库(提供业务逻辑层) - 引用了 Data Class Library、DataLayer Class Library 和 Utilities Class Library

  4. DataLayer 类库(提供直接与数据库交互的层,即 CRUD 命令)- 引用了数据类库和实用程序类库

  5. 实用程序类库(用于所有层的通用库)- 没有参考

在大多数情况下,这很好。但是,我在 Utilities 类库中有一个类,它需要引用 WebApp 和 BusinessLayer 类库中的函数和属性。我无法添加对这些项目的引用,因为这会产生循环依赖。那么,我将如何设置接口和正确的引用?

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    您设计应用程序的方式与定义的架构模式非常相似 here

    至于您的实用程序类,您可以在 BusinessLayer/domain 层中定义一个接口,并在实用程序层中实现该接口。请注意,它应该只返回业务层/域中定义的类型。这样,您将获得很好的关注点分离。如果假设您的 Web 需要使用此实用程序方法,您可以应用转换将您的域类型转换为 Web 项目特定类型。这样你就不会遇到循环依赖。

    我根据这些原理创建了一个示例应用程序,你可以参考我的github 项目。

    【讨论】:

      【解决方案2】:

      听起来您需要将这些常用功能从 webapp 中移出并移至实用程序库中。我认为您不应该从任何其他库中引用您的网络应用程序。

      【讨论】:

        猜你喜欢
        • 2016-11-22
        • 2020-09-03
        • 2014-07-09
        • 1970-01-01
        • 2011-04-08
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多