I am currently struggling with this scenario:
I have a solution that consists of three main projects
project 1: The admin center - where I handle things.
project 2: The control center - where my customer handle things.
project 3: The WebAPI - where the customers of my customers get certain things.
Here's the thing. Project 1 obviously has the least to no restrictions, it may know everything. Project 2 knows less, has some restrictions, may not know all obviously.
Project 3 knows almost nothing, gets a few things and sets a few things, obviously shouldn't know anything about the admin panel or control center etc.
I came up with the following solution:
I added another project called 'Common' that consists of the bll, dal and bo layer. Basically the heart of the whole thing. Now I obviously can not reference that by every project due to the fact that only the admin center needs to know everything, the rest dont. I.e. the WepAPI does not need to know how to add or remove users.
So I added another layer, called 'Data Transfer Layer'. Basically 3 more projects - DataTransferAdminarea, DataTransferAppAPI and the DataTransferUsercontrolarea - where I would manage what the three main projects have access to. Now the problem is that all the main projects do not know any of the business objects that are inherited by their representetive Datatransfer projects. I am kind of lost here on what I should do..