I am working on an asp.net MVC web application which contains several projects.
One is BusinessObjects, which contains business logic / processes.
Another is EmailGeneration which is used to send marketing campaign / customer emails.
The EmailGeneration project references the BusinessObjects project because it need to generate templated emails based on Business Objects.
I need to be able to trigger emails from business objects so that I can, say, automatically send an invoice when an order is completed.
However, I can't add the reference as it would create a circular reference. This suggests that my design is flawed.
How can I change my design to reduce coupling between the components?