Search code examples
c#organization

How should I organize my c# solution?


I have three projects in my C# 4 solution.

  • MooDB: Has my domain objects in, NHibernate mappings, presentation classes.
  • Data: Has my data access layer classes (using NHibernate)
  • Test: Has my test classes

Here's a screenshot:

enter image description here

I've noticed that I've got app.config and hibernate.cfg.xml in my Test project. This does seem right. I don't have an app.config in my Data project which is a problem because I want to use log4net in my Data project but I can't configure it if there's no app.config there.

What's the best way to set up my solution? Should there be an app.config for each project or for the solution as a whole? Do I need one for my Test project? Have I organized it according to "best practise"?


Solution

  • I usually see config files at the highest layer; which is usually the UI or Test.

    This makes sense (to me at least), because the application is directing the data layer to which repository it should be fetching the data from. Your test layer is probably going to go to a different place than your production application; so having config in the Data project wouldn't make much sense to me... it's the top layer that's "configuring" the bottom layers.