解决循环依赖的一种方法是在两个程序集之间放置一个层:
而不是这种情况;
装配模型:
public class Customer{
//...
}
装配数据:
public class CustomerDAO{
public Customer LoadCustomer(int id){
return new Customer(id,...);
}
}
其中模型程序集引用数据程序集并且数据无法返回模型以实例化客户。
你可以改为;
装配模型:
public class CustomerModel:Customer{}
public class ModelFactoryImp:ModelFactory{
public Customer CreateCustomer(int id,//...customer params){
return new CustomerModel(...);
}
}
装配模型接口:
public abstract class Customer{//...}
public abstract ModelFactory{
Customer CreateCustomer(int id,//...customer params);
}
装配数据:
public class CustomerDAO{
private ModelFactory _modelFactory;
public CustomerDAO(ModelFactory modelFactory){
_modelFactory = modelFactory;
}
public Customer LoadCustomer(int id)
{
// Data Access Code
return _modelFactory.CreateCustomer(id,//...cutomer params);
}
}
模型和数据程序集都依赖于 ModelInterfaces 层,并且您将 ModelFactory 类的实现传递给客户数据访问对象,以便它可以创建客户。