I am trying to create modular (component based) application.
My scenario is so simple, I have a SalesManagement component which contains Invoice, and I have PartyManagement component which contains Customer,
so far so good, Then I defined a class for Customer as
public class Customer {
public int ID {get;set;}
public string Name {get;set;}
}
and Invoice as
public class Invoice {
public int ID {get;set;}
public int CustomerID {get;set;}
public Customer Customer {get;set;}
}
in order to have Customer reference in Invoice I referenced PartyManagement in SalesManagement component
then I tried to add a collection of Invoice under customer as
public class Customer {
public int ID {get;set;}
public string Name {get;set;}
public virtual ICollection<Invoice> Invoices {get;set;}
}
to make it happen I have to reference InvoiceManagement in PartyManagement which makes a circular dependency between assemblies in compile time
Any idea how to resolve this design issue?
p.s If I keep everything in 1 assembly there is no problem, I want to keep them in separate assemblies