0

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

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

4

4 回答 4

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
于 2012-05-28T14:41:27.880 回答
1

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

注意:更好 -DataAccessLayer应该只引用 fromBusinessLogic并且您的主项目应该只引用BusinessLogic.

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

于 2012-05-28T14:37:23.423 回答
0

将您的业务逻辑和数据访问层放在第三个项目中,也许称之为“通用”。

于 2012-05-28T14:38:04.987 回答
0

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

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

于 2012-05-28T14:38:24.517 回答