2个项目和它们之间的参考

本文关键字:之间 参考 项目 2个 | 更新日期: 2023-09-27 18:35:29

我有主项目,第二个有几个UserControls。我在主项目中使用此用户控件,并且UserControls需要使用主项目中的一些类(负责BusinessLogicDataAccessLayer)。

如何连接两个项目?现在它创建了循环依赖关系。

2个项目和它们之间的参考

其中一个可能的问题涉及将用户控件绑定到服务的规范而不是实现。

从技术上讲,这意味着您有另一个库,在您的主项目和包含您的规范的控制库之间共享:

public interface IBusinessLogic
{
   void DoSomething();
}

然后,在用户控件库中针对接口进行编码,允许注入实现:

public MyControl : UserControl
{
   private IBusinessLogic _logic;
   public MyControl( IBusinessLogic logic )
   {
      this._logic = logic;
   } 
   // use the _logic
}

在主模块中,您提供服务的实现并将其注入到控件中:

public MyBusinessLogic : IBusinessLogic { }
MyControl control = new MyControl( new MyBusinessLogic() ); // inject the implementation

不要创建BusinessLogicDataAccessLayer内部您的主项目。在自己的项目中创建每个项目,并从主项目中引用它们。

注意:最好 - DataAccessLayer应该只引用BusinessLogic,而你的主项目应该只引用BusinessLogic

但简而言之,

这只是对您的问题的简短回答。我建议您在此处搜索有关 3 层体系结构的更多信息。

将业务逻辑和数据访问层放在第三个项目中,可以称之为"通用"。

我认为您需要将共享逻辑从两个项目中取出,并将其放入第三个项目中。

例如:如果主项目中有用户控件也需要的逻辑 - 则需要将该逻辑提取到单独的项目中,并从两个项目中引用该逻辑。