我有一个类库来保存我的对象,以便:
xxxCommon \ Objects \ Customer.cs
public class Customer
{
public string url { get; set; }
public List<Telephone> telephones { get; set; }
}
xxxData \ DC \ CustomerDC.cs(DataComponent)
此类调用许多proc并返回xxxCommon \ Objects中的对象
我现在的主要问题是循环引用,要进行“惰性”加载,我需要设置
电话归功于xxxData \ DC中的功能,如何避免这种情况?
最佳答案
解决循环依赖关系的一种方法是在两个程序集之间有一个层:
而不是这种情况;
组装模型:
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);
}
}
在其中Model和Data程序集都依赖于ModelInterfaces层的情况下,您向Customer数据访问对象传递ModelFactory类的实现,以便它可以创建Customer。