When I ran into this problem, I have created classes that have only properties. May be Employee , Customer , Product , whatever. These classes should not refer to any other project, therefore several projects can refer to them.
The methods that belong to these objects ( Employee , Customer , Product ) then go into their own classes in other projects.
One of the situations when I met this quite often is a three-layer application - presentation layer, business layer and data access layer. I want the DAL to retrieve data and populate the Employee object that is returned by the BLL. If the Employee class is in the BLL and has both properties and methods, then there is no easy way to populate the Employee object in the DAL and return it to the BLL - since the BLL must have a reference to the DAL, so the DAL cannot in turn refer to the BLL. Creating a separate project with properties of only classes ( Employee , Customer , Product ) is one way to solve this problem.
source share