Config Reader Utility
Reshef Mann, one of the members of our devdiv released a nifty little utility for reading configuration files into easy to work-with type-safe interface.
Instead of trying to explain it - Here is the example from his Getting Started :
When you have .config file:
<span class="pun"><?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"utf-8"</span><span class="pln"> </span><span class="pun">?></span><span class="pln"><br /></span><span class="pun"><</span><span class="tag">configuration</span><span class="pun">></span><span class="pln"><br /> </span><span class="pun"><</span><span class="tag">appSettings</span><span class="pun">></span><span class="pln"><br /> </span><span class="pun"><</span><span class="tag">add</span><span class="pln"> </span><span class="atn">key</span><span class="pun">=</span><span class="atv">"MailNotificationSettings.SmtpServerAddress"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"http://localhost"</span><span class="pun">/></span><span class="pln"><br /> </span><span class="pun"><</span><span class="tag">add</span><span class="pln"> </span><span class="atn">key</span><span class="pun">=</span><span class="atv">"MailNotificationSettings.Username"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"user123"</span><span class="pun">/></span><span class="pln"><br /> </span><span class="pun"><</span><span class="tag">add</span><span class="pln"> </span><span class="atn">key</span><span class="pun">=</span><span class="atv">"MailNotificationSettings.Password"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"passwd123"</span><span class="pun">/></span><span class="pln"><br /> </span><span class="pun"></</span><span class="tag">appSettings</span><span class="pun">></span><span class="pln"><br /></span><span class="pun"></</span><span class="tag">configuration</span><span class="pun">></span>Define the following interface:
<span class="kwd">public</span><span class="pln"> </span><span class="kwd">interface</span><span class="pln"> </span><span class="typ">IMailNotificationSettings</span><span class="pln"><br /></span><span class="pun">{</span><span class="pln"><br /> </span><span class="typ">Uri</span><span class="pln"> </span><span class="typ">SmtpServerAddress</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">get</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"><br /> </span><span class="kwd">string</span><span class="pln"> </span><span class="typ">Username</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">get</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"><br /> </span><span class="kwd">string</span><span class="pln"> </span><span class="typ">Password</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">get</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"><br /></span><span class="pun">}</span>And from your program use this code:
<span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">Main</span><span class="pun">()</span><span class="pln"><br /></span><span class="pun">{</span><span class="pln"><br /> </span><span class="typ">ConfigurationReader</span><span class="pln"> configReader </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ConfigurationReader</span><span class="pun">().</span><span class="typ">SetupConfigOf</span><span class="pun"><</span><span class="typ">IMailNotificationSettings</span><span class="pun">>();</span><span class="pln"><br /> </span><span class="typ">IMailNotificationSettings</span><span class="pln"> mailNotificationSettings </span><span class="pun">=</span><span class="pln"> configReader</span><span class="pun">.</span><span class="typ">ConfigBrowser</span><span class="pun">.</span><span class="typ">Get</span><span class="pun"><</span><span class="typ">IMailNotificationSettings</span><span class="pun">>();</span><span class="pln"><br /> <br /> </span><span class="kwd">var</span><span class="pln"> mailNotificationService </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">MailNotificationService</span><span class="pun">(</span><span class="pln">mailNotificationSettings</span><span class="pun">);</span><span class="pln"><br /> <br /> </span><span class="com">//</span><span class="pln"><br /> </span><span class="com">// Do the work..</span><span class="pln"><br /> </span><span class="com">//</span><span class="pln"><br /></span><span class="pun">}</span><span class="pln"><br /></span>
The project is open sourced under the Apache 2.0 license- so feel free to use it

