我正在学习一本关于C#.NEt领域驱动模型的书。我在基础设施和域层之间具有循环依赖关系(这两者都是我的解决方案的类库项目,即"ShareManagement")。我想知道如何解决Visual /C#.NET中的循环依赖问题。
ICompanyRepository从域模型层访问存储库)。IEntityFactory<T>,其中T是EntityBase (域模型层中的一个实体类,派生自第一层的EntityBase;EntityBase是所有实体的基类)。以下是基础设施层中的类(在“存储库”文件夹下):
using System.Text;
using System.Data;
using ShareManagement.Model.Company; // How to do this ??
ShareManagement.Infrastructure.EntityFactoryFramework;
namespace ShareManagement.Infrastructure.Repositories
{
internal class CompanyFactory: IEntityFactory<Company>
//Company is defined in Model Layer and derived from Abstract Base class "EntityBase"
//So, how to use "using ShareManagement.Model.Company" ?
{
}
}发布于 2013-09-19 07:28:19
下面链接中显示的图像有两个程序集/项目(包含在两个主要边界中),分别命名为基础结构层项目/组装和模型层Prject/Assembly。
从图中可以明显看出,它们都形成了循环依赖关系。http://screencast.com/t/lUGwetETXHF
这个问题的解决方案在下面的链接中描述:http://screencast.com/t/acsLjq7Ubd
如果一个项目/程序集A(本例中的模型)依赖于(引用)一个项目/程序集B(本例中的基础设施),并且如果-“程序集B(类似,Infrastructure.Repositories或EntityFactory)”依赖于(;需要引用)项目/组装A(模型)中形成循环依赖关系的类,那么就按照以下方式解决该依赖关系:
为了理解,让我们将装配B中依赖的“代码部分”命名为B-dep1 1;
见如何:
B-部门1的新项目,即"ShareManagement.Infrastructure.Repositories“依赖于B,但B不依赖于(引用)新的部分项目。
A依赖于B,但B不依赖于B-De1的新项目,即" ShareManagement.Infrastructure.Repositories“,而ShareManagement.Infrastructure.Repositories项目仍然可以继续使用基础结构层的命名空间(和封装代码),而不必添加对基础结构代码的引用,因为它们具有相同的名称空间(这就是为什么我将项目命名为B项目中的命名空间)。Visual根据项目名称或文件夹名自动创建命名空间。在不同类别的名称空间中,相同的名称空间释放程序集相互引用,就像在本例中,名称空间与Infrascture层相关。
https://stackoverflow.com/questions/18813012
复制相似问题