This question isn't a pure C# question, but rather a design question.

Just to get a better idea about the question, I will give you an example. Pretend I am going to implement a solution that handles stock information and such a things.

To be able to get stock information, such as value at the end of the day , there is a StockFetcher class. It fetches information about a certain stock that is requested. Somehow the information is the base for the instantiation of a StockInformation class. Also, StockInformation classes may be instantiated when a call comes from the application layer where the actual data is taken from a local database.

Now to the question:
I try to set up a hierarchy based on the following design layers:


What parts would go where according to you?

I assume that StockInformation class is at the Domain level.

I also assume there is a DB mechansim class handling the connections. Does it also handle StockInformation specific calls or is that part at some other layer, which??

Finally, the StockFetcher class that makes a http request to a stock site and parses the html is at the mechanism layer according to me.

BUT ... If the instatiation is done at the mechansim layer, the mechanism classes will have dependencies upward, to the domain layer and to just send back pieces of data back from the mechanisms and do the instantiation above somewhere seems to be awkward. How would you do? Should I put in a factory somewhere and how would that change the situation?