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

时间:2012-05-28 14:35:40

标签: c# winforms architecture reference n-tier-architecture

我有主要项目,其次是几个UserControls。 我在主项目中使用此用户控件,并且UserControls需要在主项目中使用某些类(负责BusinessLogicDataAccessLayer)。

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

注意:更好的关闭 - DataAccessLayer只应从BusinessLogic引用,而您的主项目只应引用BusinessLogic

但简而言之,这只是对您的问题的简短回答。我建议您在此处搜索有关3-tier architecture的更多信息。

答案 2 :(得分:0)

将您的业务逻辑和数据访问层放在第三个项目中,也可以将其命名为“Common”。

答案 3 :(得分:0)

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

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