Configuration modules
Do you really want the properties of DatabaseConfiguration to be settable?


  public string Server { get; set; }




If time is not an issue, I would make the call of each property "lazy":

public string Server =&gt; Get&lt;string&gt;("server");