<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The .NET Buffet</title><link>http://weblogs.asp.net/drohrer/default.aspx</link><description>.Net, .Net CF, Architecture, and more (would you like Fries with that?)</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Debug Build: 20510.895)</generator><item><title>VBCommenter Source</title><link>http://weblogs.asp.net/drohrer/archive/2007/12/21/vbcommenter-source.aspx</link><pubDate>Sat, 22 Dec 2007 03:19:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5485855</guid><dc:creator>drohrer</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=5485855</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2007/12/21/vbcommenter-source.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;OK, so it's been a &lt;U&gt;really&lt;/U&gt; long time since I've posted here.&amp;nbsp; In any case, I noticed that in the very recent past several people were looking for the source to VBCommenter.&amp;nbsp; As it stands, the GotDotNet site is toast, but if you look hard enough, you can still find downloads on their site for VBCommenter.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I've downloaded the 1.2.6 source code and posted it &lt;A href="http://weblogs.asp.net/blogs/drohrer/VBCommenter-Source-1.2.6-final.zip"&gt;here&lt;/A&gt; so others can continue working on it.&amp;nbsp; I'd recommend posting the code to CodePlex if there's really still a strong need for this.&amp;nbsp; Given VS.NET 2005 and 2008 both support XML comments in VB.NET code, I had long ago dropped this project.&amp;nbsp; I'm hopefully that posting the code will help out those who are still maintaining .Net Framework 1.0/1.1 applications in VB.NET.&amp;nbsp; Go forth and code!&lt;/P&gt;
&lt;P mce_keep="true"&gt;Doug&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5485855" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Main+Courses+_28002E00_Net_2900_/default.aspx">Main Courses (.Net)</category><category domain="http://weblogs.asp.net/drohrer/archive/tags/Visual+Basic/default.aspx">Visual Basic</category><category domain="http://weblogs.asp.net/drohrer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>VBCommenter 1.2.5 FINAL released</title><link>http://weblogs.asp.net/drohrer/archive/2005/03/16/394956.aspx</link><pubDate>Thu, 17 Mar 2005 03:25:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:394956</guid><dc:creator>drohrer</dc:creator><slash:comments>15</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=394956</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/03/16/394956.aspx#comments</comments><description>&lt;p&gt;Anyone who is using VB.NET and wished for support for XML comment generation (NDoc, anyone?) should be using VBCommenter.&amp;nbsp; As I found myself in that very situation over the last few months, I've made some fairly major improvements to the VBCommenter add-in, and have wrapped up a new release.&lt;/p&gt; &lt;p&gt;After struggling with IE trying to convince it to load hosted .Net controls using the 1.1 framework (I have the VS.NET 2005 beta installed and, by default, IE will use the latest runtime for hosted controls), I've managed to get the 1.2.5 VBCommenter release completed, in source control, and available.&amp;nbsp; Head to the &lt;a href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=112b5449-f702-46e2-87fa-86bdf39a17dd"&gt;VBCommenter Workspace Home&lt;/a&gt;&amp;nbsp;for the download.&amp;nbsp; Here are the highlights between 1.2 and 1.2.5:&lt;/p&gt; &lt;p&gt;- Major speed improvements (mostly related to schema and XML validation handling).&amp;nbsp;For example, a large project that took 14 minutes to build using 1.2 and 2 minutes without VBCommenter takes about 2.5 minutes with 1.2.5. &lt;br /&gt;- Improved comment schema (includes all NDoc extensions to the XML comment schema) &lt;br /&gt;- Improved XML validation and task list reporting &lt;br /&gt;- Fixed defect relating to Reporting Services projects (MSDN article ID 842434) - your Intellisense will no longer go away when you build a solution with a Reporting Project in it. &lt;br /&gt;- Improved interoperability with other add-ins by not forcing the IDE to shadow copy all assemblies it loaded in the add-in appdomain.&amp;nbsp;This is known to resolve issues with BizTalk 2004, Borland's Together Edition for Microsoft Visual Studio .Net, and (potentially) AnkhSVN. &lt;br /&gt;- &amp;lt;see cref=""/&amp;gt; will output the correct XML for the cref attribute. &lt;br /&gt;- The XmlWriter.FindType method has been simplified and its speed improved dramatically, increasing the reliability and performance of the add-in. &lt;br /&gt;- cref resolution is much better - If your class has a method called "Log" and you want to reference it, the generated cref will be correct instead of pointing to System.Diagnostics.Log &lt;br /&gt;- Handles Enterprise Template Projects correctly &lt;br /&gt;- Reads assemblies in read-only mode to avoid locking the file or the inability to load the assembly if the IDE has it locked &lt;br /&gt;- Fixes issues with duplicate comment prefixes being created &lt;br /&gt;- Renders variables declared as "WithEvents" as properties (which is how the WithEvents keyword is implemented in IL) to allow NDoc to find the appropriate comments for the field. &lt;br /&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=394956" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Desert+_2800_Other+Stuff_2900_/default.aspx">Desert (Other Stuff)</category><category domain="http://weblogs.asp.net/drohrer/archive/tags/Main+Courses+_28002E00_Net_2900_/default.aspx">Main Courses (.Net)</category></item><item><title>End to End EntLib Demonstration (Source and Powerpoint presentation)</title><link>http://weblogs.asp.net/drohrer/archive/2005/02/20/376998.aspx</link><pubDate>Sun, 20 Feb 2005 19:40:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:376998</guid><dc:creator>drohrer</dc:creator><slash:comments>20</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=376998</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/02/20/376998.aspx#comments</comments><description>&lt;p&gt;Ok, so between naps (of my 21-month-old son) and some late nights, I've managed to get the source code from my presentation last Tuesday put together.&amp;nbsp; You can &lt;a href="http://www.dotavery.com/downloads/EntLibCSharp.zip"&gt;downoad the&amp;nbsp;source and my presentation&lt;/a&gt;&amp;nbsp;and follow the readme.txt to get set up.&amp;nbsp; The source has examples of consuming all of the application blocks.&amp;nbsp; It also includes an example of how to integrate ASP.NET's Forms Authentication and EntLib's Authentication/Authorization block.&lt;/p&gt; &lt;p&gt;The example application presented and the presentation itself were both based on (ok, mostly copied from)&amp;nbsp;the earlier work of some great people at Avanade - Jeff Donahoe, Kyle Burkholder, and &lt;a href="http://spaces.msn.com/members/spacecataz/PersonalSpace.aspx?_c01_blogpart=blogmgmt&amp;amp;_c=blogpart"&gt;Ben Reierson&lt;/a&gt;.&amp;nbsp; I'd like to thank them for their efforts to put this together - hopefully some of my additions will be useful to them as well.&lt;/p&gt; &lt;p&gt;Over the next few weeks, naps permitting, I'll be writing up a blog entry for each block and using this source for my explainations.&amp;nbsp; But not tonight - too much time in front of the computer and not enough time spent with the family over the last week.&lt;/p&gt; &lt;p&gt;Feel free to post here if you have any issues or questions.&amp;nbsp; I'll try my best to help out.&lt;/p&gt; &lt;p&gt;Doug&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=376998" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Main+Courses+_28002E00_Net_2900_/default.aspx">Main Courses (.Net)</category></item><item><title>Another VB.NET note (The BuildRules add-in)</title><link>http://weblogs.asp.net/drohrer/archive/2005/02/19/376804.aspx</link><pubDate>Sun, 20 Feb 2005 04:09:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:376804</guid><dc:creator>drohrer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=376804</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/02/19/376804.aspx#comments</comments><description>&lt;p&gt;On another VB.NET note, for anyone using the BuildRules tool included in the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3ff9c915-30e5-430e-95b3-621dccd25150&amp;amp;displaylang=en"&gt;Microsoft Visual Studio .Net 2003 Automation Samples &lt;/a&gt;and have noticed that when you have a reporting project in your solution the BuildRules tree doesn't populate itself, the bug is essentially the same bug as the one I fixed in VBCommenter.&amp;nbsp; There's a "foreach (project in solution.projects)" or some such loop in the BuildRules code, which fails somewhat silently when a reporting services project is in the solution.&amp;nbsp; If you change it to an indexed loop going from 1 to the count of the Solution.Projects.Count property (yes, it really is a one-based array)&amp;nbsp;and get the project using the Projects.Item(index) property, it will work again.&amp;nbsp; This appears to have something to do with the COM interface to VS.NET and its implementation of the COM equivalent of IEnumerable.GetEnumerator (NewEnum? Sorry, I wasn't a COM guy before .NET) method, which fails in this case.&lt;/p&gt; &lt;p&gt;Specifics (DISCLAIMER: this is mostly untested code, but should work):&lt;/p&gt; &lt;p&gt;On line 266 of the RulesFrm.vb file, you'll find this:&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 12pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Lucida Console"&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;266&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;For&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Each&lt;/span&gt; project &lt;span style="COLOR: blue"&gt;In&lt;/span&gt; applicationObject.Solution.Projects&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;267&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; globals &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; EnvDTE.Globals&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;268&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;Try&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;269&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; globals = project.Globals&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;270&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;271&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; globals = &lt;span style="COLOR: blue"&gt;Nothing&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;272&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Try&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;273&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;274&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;If&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Not&lt;/span&gt; (globals &lt;span style="COLOR: blue"&gt;Is&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Nothing&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;Then&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;275&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; projectNode = preBuildNode.Nodes.Add(project.Name)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;276&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; projectNode.Tag = project&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;277&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; projectNode = postBuildNode.Nodes.Add(project.Name)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;278&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; projectNode.Tag = project&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;279&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;If&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;280&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;Next&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;If you change it to read:&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 12pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Lucida Console"&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;266&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;For&lt;/span&gt; i &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Integer&lt;/span&gt; = 1 &lt;span style="COLOR: blue"&gt;To&lt;/span&gt; applicationObject.Solution.Projects.Count&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;267&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; project = applicationObject.Solution.Projects.Item(i)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;268&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; globals &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; EnvDTE.Globals&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;269&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;Try&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;270&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; globals = project.Globals&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;271&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;272&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; globals = &lt;span style="COLOR: blue"&gt;Nothing&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;273&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Try&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;274&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;275&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;If&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Not&lt;/span&gt; (globals &lt;span style="COLOR: blue"&gt;Is&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Nothing&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;Then&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;276&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; projectNode = preBuildNode.Nodes.Add(project.Name)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;277&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; projectNode.Tag = project&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;278&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; projectNode = postBuildNode.Nodes.Add(project.Name)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;279&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; projectNode.Tag = project&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;280&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;If&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;281&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;282&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;Next&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;!--EndFragment--&gt; &lt;p&gt;It should fix the issue and allow you to use the BuildRules add-in with Reporting Services projects.&amp;nbsp; It seems strange, but it's true!&lt;!--EndFragment--&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=376804" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Main+Courses+_28002E00_Net_2900_/default.aspx">Main Courses (.Net)</category></item><item><title>A new VBCommenter release for those of you using VB.NET...</title><link>http://weblogs.asp.net/drohrer/archive/2005/02/19/376797.aspx</link><pubDate>Sun, 20 Feb 2005 03:43:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:376797</guid><dc:creator>drohrer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=376797</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/02/19/376797.aspx#comments</comments><description>&lt;p&gt;I've just posted a new release of VBCommenter on the GotDotNet workspaces.&amp;nbsp; This tool has been invaluable to us on my current project, where VB.NET has been mandated but where we wanted to create our API documentation just like a C# project.&amp;nbsp; However, there were several issues with the 1.2 release that caused us issues, and over the last few months I've been slowly working on cleaning them up.&amp;nbsp; Major improvements over the 1.2 version include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Improved performance - Build times on our (admitedly highly-commented) solution have gone from 14 minutes to 2 minutes with XML comment generation turned on (and about 1.5 minutes without) &lt;li&gt;Improved error handling and reporting - I've included the C# Comment Schema from &lt;A href="http://weblogs.asp.net/cazzu/archive/2003/12/29/46476.aspx"&gt;Daniel Cazzulino's Blog&lt;/a&gt;, with a few minor modifications to make it validate fragments of XML comments.&amp;nbsp; This schema is much more accurate than the original included with VBCommenter, and also helped improve performance because there are fewer XML comment errors thrown by the add-in. &lt;li&gt;Fixed a bug related to Reporting Services projects - see &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;842434"&gt;this Microsoft support article&lt;/a&gt; for more details on the problem.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;There are still a few things I'd like to improve, so I've labeled this a "release candidate," but we're using it heavily on my current project and others at my client and things seem to work well so far.&lt;/p&gt; &lt;p&gt;Check out the &lt;a href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=112b5449-f702-46e2-87fa-86bdf39a17dd"&gt;VBCommenter Workspace Home&lt;/a&gt;&amp;nbsp;for more information and the download.&lt;/p&gt; &lt;p&gt;And, for those of you awaiting the source code from my presentation at the Cincinnati .NET User's Group, it will be up tomorrow as promised.&amp;nbsp; I'll be posting on all of the major EntLib blocks in the next few weeks, using this solution as a running example.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=376797" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Main+Courses+_28002E00_Net_2900_/default.aspx">Main Courses (.Net)</category></item><item><title>My EntLib presentation to the Cincinnati .Net users' group meeting is TONIGHT (2/15) at 6</title><link>http://weblogs.asp.net/drohrer/archive/2005/02/15/373092.aspx</link><pubDate>Tue, 15 Feb 2005 17:09:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:373092</guid><dc:creator>drohrer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=373092</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/02/15/373092.aspx#comments</comments><description>&lt;p&gt;If you happen to live in the Cincinnati area and read my blog - I'm giving a presentation on Enterprise Library tonight at the Cincinnati .Net Users Group - see &lt;a href="http://www.cinnug.org"&gt;their site&lt;/a&gt;&amp;nbsp;for directions.&amp;nbsp; The presentation will start at 6pm and last until around 7.&lt;/p&gt; &lt;p&gt;I hope to see you there!&lt;/p&gt; &lt;p&gt;Doug&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=373092" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Appetizers+_28002E00_Net+CF_2900_/default.aspx">Appetizers (.Net CF)</category><category domain="http://weblogs.asp.net/drohrer/archive/tags/Cooking+School+_2800_Architecture+and+Lifecycle_2900_/default.aspx">Cooking School (Architecture and Lifecycle)</category><category domain="http://weblogs.asp.net/drohrer/archive/tags/Desert+_2800_Other+Stuff_2900_/default.aspx">Desert (Other Stuff)</category><category domain="http://weblogs.asp.net/drohrer/archive/tags/Main+Courses+_28002E00_Net_2900_/default.aspx">Main Courses (.Net)</category></item><item><title>Enterprise Library Configuration (Part 2/2): Customizable configuration with framework extensions.</title><link>http://weblogs.asp.net/drohrer/archive/2005/02/05/367771.aspx</link><pubDate>Sat, 05 Feb 2005 18:57:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:367771</guid><dc:creator>drohrer</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=367771</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/02/05/367771.aspx#comments</comments><description>&lt;p&gt;In my &lt;A href="http://weblogs.asp.net/drohrer/archive/2005/02/02/366015.aspx"&gt;first article on Enterprise Library configuration&lt;/a&gt;, I talked about how to build your own "root node" in a configuration file.&amp;nbsp; We also discussed how to use the ILinkedNodeService to reference another configuration node from within your custom configuration section, and went over some details as to how the code worked in relation to the configuration manager tool.&amp;nbsp; I provided a &lt;a href="http://www.dotavery.com/downloads/configuration.zip"&gt;downloadable code example&lt;/a&gt;&amp;nbsp;that I will use again in this post.&lt;/p&gt; &lt;p&gt;Before I get started, I wanted to point you to the tool that myself (and many others) use to get our VS.NET code into such nice HTML format - it's called &lt;a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/"&gt;CopySourceAsHtml &lt;/a&gt;by &lt;a href="http://www.jtleigh.com/people/colin/blog/"&gt;Colin Coller&lt;/a&gt;.&amp;nbsp; Thanks for such a time-saving tool.&lt;/p&gt; &lt;p&gt;In this post, I'm going to discuss how you can create customized "providers" (the Enterprise Library term for pluggable modules that fit within the code EntLib frameworks), and how those providers can use the configuration tool to gather customizable information from the user beyond&amp;nbsp;default key/value pairs you get without any additional work.&amp;nbsp; We're going to build an Authorization Provider that will authorize a given request based solely on the system's pseudo-random number generator and a threshold value provided through the configuration framework.&lt;/p&gt; &lt;p&gt;If you open up the solution, we'll be looking at the EntLibFrameworkConfigDemo project this time.&amp;nbsp; I want to start with the MyAuthenticationProvider class, which is the actual random authenticator.&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Courier New"&gt;&lt;strong&gt;MyAuthorizationProvider.cs&lt;/strong&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Configuration;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Security;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; EntLibConfigDemo.ExtendingFrameworks&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;{&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Summary description for MyAuthenticationProvider.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; MyAuthorizationProvider: ConfigurationProvider, IAuthorizationProvider&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; System.Random _rnd = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.Random();&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; threshold;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; applicationName;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; MyAuthorizationProvider()&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// No constructor logic needed&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; IAuthorizationProvider Members&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; Authorize(System.Security.Principal.IPrincipal principal, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; context)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (_rnd.NextDouble()&amp;gt;threshold) &lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; IConfigurationProvider Members&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; SecurityConfigurationView securityConfigurationView;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Initializes the state of the current object from&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; the specified configuration data.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="configurationView"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;A &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="SecurityConfigurationView"&amp;gt;&amp;lt;/see&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; object&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Initialize(ConfigurationView configurationView)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Check to make sure we have a valid configuration node before continuing&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;==configurationView) &lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ArgumentNullException("configurationView cannot be null");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; securityConfigurationView = configurationView &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; SecurityConfigurationView;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;==securityConfigurationView) &lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ArgumentException("configurationView is not of the correct type.");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Load our authorization data and store the relevant information for later use&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MyAuthorizationProviderData data = securityConfigurationView.GetAuthorizationProviderData(ConfigurationName) &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; MyAuthorizationProviderData;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;==data) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ArgumentException("AuthorizationProviderData is not of type MyAuthorizationProviderData");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; threshold = data.AuthorizationRate;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; applicationName = data.Application;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/span&gt;&amp;nbsp;}&lt;/p&gt;&lt;/div&gt;&lt;!--EndFragment--&gt; &lt;p&gt;&lt;u&gt;The IConfigurationManager interface:&lt;/u&gt;&lt;/p&gt; &lt;p&gt;What we're interested in here is the IConfigurationManager implementation, which is nothing more than the Initialize method.&amp;nbsp; This method is called when the provider is first loaded, and provides the framework a way to pass configuration data to the provider.&amp;nbsp; Here we check to make sure we've received the right type of configuration data and then initialize the private variables from the configuration data.&amp;nbsp; Pretty simple all in all.&amp;nbsp; The SecurityConfigurationView class is part of the core EntLib class library and provides several utility methods including the GetAuthorizationProviderData we use to retrieve the authorization data, which is defined in the MyAuthroizationProviderData class.&amp;nbsp; Both the MyAuthorizationData and the MyAuthroizationProviderNode don't add anything new from &lt;A href="http://weblogs.asp.net/drohrer/archive/2005/02/02/366015.aspx"&gt;my previous post&lt;/a&gt;, so I'm not going to go into detail on them here.&amp;nbsp; The major difference between the two examples is in the DesignManager class, in this case MyAuthorizationProviderDesignManager class:&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Courier New"&gt;&lt;strong&gt;MyAuthorizationProviderDesignManager.cs&lt;/strong&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//===============================================================================&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;// Microsoft patterns &amp;amp; practices Enterprise Library&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;// Security Application Block&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//===============================================================================&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;// Copyright © Microsoft Corporation.&amp;nbsp; All rights reserved.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;// LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;// FITNESS FOR A PARTICULAR PURPOSE.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//===============================================================================&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Diagnostics;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Configuration;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Configuration.Design;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Security.Configuration;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; EntLibConfigDemo.ExtendingFrameworks&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;{&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Configuration Design Manager for MyAuthorizationProvider. &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;seealso cref="IConfigurationDesignManager"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; MyConfigurationDesignManager : IConfigurationDesignManager&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Initializes a new instance of the &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="MyConfigurationDesignManager"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; class.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; MyConfigurationDesignManager()&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;Registers the &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="MyAuthorizationProviderNode"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; in the application.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Register(IServiceProvider serviceProvider)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RegisterNodeTypes(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RegisterXmlIncludeTypes(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;Opens the configuration settings and registers them with the application.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Open(IServiceProvider serviceProvider)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;Saves the configuration settings created for the application.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Save(IServiceProvider serviceProvider)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;Adds to the dictionary configuration data for &lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; the enterpriselibrary.configurationSettings configuration section.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;71&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="configurationDictionary"&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;72&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;A &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ConfigurationDictionary"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to add &lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;73&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; configuration data to.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/para&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;74&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; BuildContext(IServiceProvider serviceProvider, ConfigurationDictionary configurationDictionary)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;75&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;76&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;77&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;78&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; RegisterXmlIncludeTypes(IServiceProvider serviceProvider)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;79&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;80&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Find the xmlIncludeTypeService, which registers the XML-serializable class representing the configuration data.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;81&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IXmlIncludeTypeService xmlIncludeTypeService = serviceProvider.GetService(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(IXmlIncludeTypeService)) &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; IXmlIncludeTypeService;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;82&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Assert(xmlIncludeTypeService != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, "Could not find the IXmlIncludeTypeService");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;83&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Register the MyAuthorizationProviderData type with the xmlIncludeTypeService&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;84&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xmlIncludeTypeService.AddXmlIncludeType(SecuritySettings.SectionName, &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(MyAuthorizationProviderData));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;85&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;86&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;87&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; RegisterNodeTypes(IServiceProvider serviceProvider)&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;88&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;89&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Get the Node Creation Service to we can register our configuration node (the designer class) with the configuration tool.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;90&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; INodeCreationService nodeCreationService = ServiceHelper.GetNodeCreationService(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;91&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;92&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Type nodeType = &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(MyAuthorizationProviderNode);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;93&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Register a new command with the Node Creation Service, allowing multiple instances within a single configuration file.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;94&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// The DisplayName parameter is what is displayed in the configuration manager menu.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;95&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NodeCreationEntry entry = NodeCreationEntry.CreateNodeCreationEntryWithMultiples(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; AddChildNodeCommand(serviceProvider, nodeType), nodeType, &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(MyAuthorizationProviderData), "My Authorization Provider");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;96&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; nodeCreationService.AddNodeCreationEntry(entry);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;97&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;98&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;99&lt;/span&gt;&amp;nbsp;}&lt;/p&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;!--EndFragment--&gt; &lt;p&gt;Because we are simply adding a new provider of a type the configuration manager already knows something about, we just have to figure out how to add our type to the correct menu item.&amp;nbsp; In this case, the key is to know that in the RegisterXmlIncludeTypes method to call the AddXmlIncludeType takes the section name as its first parameter.&amp;nbsp; Otherwise, the major difference between this class and the AppConfig example is that this one is much simpler.&amp;nbsp; Most of the implementation of the IConfigurationDesignManager interface is not necessary, and there is no CreateCommands method, as the command to create an authentication provider node is already part of the configuration manager.&lt;/p&gt; &lt;p&gt;With that, I'll leave you to explore the Enterprise Library configuration management classes.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=367771" width="1" height="1"&gt;</description></item><item><title>Enterprise Library Configuration (Part 1/2): Customized Appsettings and the EntLib Configuration Manager tool.</title><link>http://weblogs.asp.net/drohrer/archive/2005/02/02/366015.aspx</link><pubDate>Thu, 03 Feb 2005 03:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:366015</guid><dc:creator>drohrer</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=366015</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/02/02/366015.aspx#comments</comments><description>&lt;p&gt;So I've finally gotten comfortable enough with the configuration management tool to post some examples.&amp;nbsp; I'll be doing a 2-part series on the Enterprise Library configuration framework and how you can incorporate your own application configuration into the tool and also customize the configuration offered by your custom frameworks.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I'd also like to point out the &lt;a href="http://blog.hishambaz.com/"&gt;posts of Hisham Baz&lt;/a&gt;&amp;nbsp;and &lt;A href="http://weblogs.asp.net/scottdensmore"&gt;Scott Densmore&lt;/a&gt;&amp;nbsp;who have done some similar work and has a few other walk-throughs on both the Configuration topic and others.&lt;/p&gt; &lt;p&gt;I've included two projects in the downloadable solution.&amp;nbsp; The first is&amp;nbsp;essentially a customized&amp;nbsp;appsettings node that&amp;nbsp;can be edited in the configuration tool.&amp;nbsp; The second is an overly simplified Authorization manager, which shows how to&amp;nbsp;extend the existing frameworks and provide a user-friendly way to edit&amp;nbsp;the configuration data for those extensions.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update:&amp;nbsp; &lt;/strong&gt;I missed four lines of code in my example download code (sent an older version to James) and as of 11:51 PM EST on 2/2/2005, I've sent the update to James to get to his site.&amp;nbsp; If you download it before he uploads the update, simply take the code in the blog post for the &lt;strong&gt;AppConfigNode.cs&lt;/strong&gt; file and replace the code in the download with this code.&amp;nbsp; Sorry for the inconvenience.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; It's now 9:45am on 2/3/2005 and James has updated the download.&lt;/p&gt; &lt;p&gt;My good friend &lt;a href="http://www.dotavery.com/blog"&gt;James&lt;/a&gt;&amp;nbsp;was nice enough to host the example's source&amp;nbsp;for me, so, &lt;a href="http://www.dotavery.com/downloads/configuration.zip"&gt;grab the code&lt;/a&gt;, sit back, and let's take a look.&lt;/p&gt; &lt;p&gt;&lt;u&gt;Customized Application Configuration Nodes&lt;/u&gt;&lt;/p&gt; &lt;p&gt;Each customized configuration node requires several classes in order to be completely integrated with the configuration management tool.&amp;nbsp; The first, as explained in the EntLib Quick Starts, is the container class, usually named with a postfix of "Data."&amp;nbsp; This class is the class that is actually serialized to the config file, and is fairly simple.&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Courier New"&gt;&lt;strong&gt;AppConfigData.cs&lt;/strong&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Xml.Serialization;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; EntLib = Microsoft.Practices.EnterpriseLibrary.Configuration;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; EntLibConfigDemo {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; This class is the serializable representation of our configuration data.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [XmlRoot()]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; AppConfigData {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; AppConfigData() {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; AppConfigData(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;._name = name;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; _url;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; The URL for the application&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [XmlElement("Url")]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Url {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; { &lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _url;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _url = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; _maxUsers;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [XmlElement("MaxUsers")]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; MaxUsers {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _maxUsers;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _maxUsers = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; _database;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [XmlElement("Database")]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Database {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _database;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _database = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; _name;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [XmlElement("Name")]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Name {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _name;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _name = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;71&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;72&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Used to demonstrate the configuration manager's ability to display enums easily&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;73&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;74&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;enum&lt;/span&gt; AppState {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;75&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Unknown,&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;76&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Up,&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;77&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Down&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;78&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;79&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;80&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; AppState _state;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;81&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;82&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [XmlElement("State")]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;83&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; AppState State {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;84&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;85&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _state;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;86&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;87&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;88&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _state = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;89&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;90&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;91&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;92&lt;/span&gt;&amp;nbsp;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Note that the "State" property is defined by an Enum type, and in the configuration tool you will find that this data is represented by a drop-down list as you would expect.&amp;nbsp; As stated earlier, this class is really just a data container, and the next class, the AppConfigNode, defines how this class is displayed in the configuration tool and what happens when certain events like node renames or removes happen in the tool.&amp;nbsp; These events allow you to utilize other configuration nodes, like the database in this example, and be assured that when the user renames or removes them you can handle those changes appropriately.&amp;nbsp; Here's&amp;nbsp;&amp;nbsp;the source for the AppConfigNode class, which we'll dig into more once you've read over it.&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Courier New"&gt;&lt;strong&gt;AppConfigNode.cs&lt;/strong&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.ComponentModel;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Drawing.Design;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Configuration.Design;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Data.Configuration;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Data.Configuration.Design;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Configuration.Design.Validation;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; EntLibConfigDemo {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; AppConfigNode is the configuration-time representation of the AppConfigData class.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; The ServiceDependency attribute informs the configuration manager that this class&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; needs to instantialte an ILinkNodeService to make sure that other configuration nodes&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; on which this node depends can be found.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Apply attributes from the System.ComponentModel namespace to tbe public properties to control their&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; behavior in the configuration tool &lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ServiceDependency(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(ILinkNodeService))]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; AppConfigNode: ConfigurationNode {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Constructors&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; AppConfigNode():&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; AppConfigData("Application Configuration")) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; AppConfigNode(AppConfigData data) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _appConfigData = data;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Public properties&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; AppConfigData _appConfigData;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Browsable(&lt;span style="COLOR: blue"&gt;false&lt;/span&gt;)]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; AppConfigData Data {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _appConfigData;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Category("General"), Description("Url of the system"), Required()]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Url {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _appConfigData.Url;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _appConfigData.Url = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Category("General"), ReadOnly(&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;)]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Name {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; { &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.Name; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; { &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.Name = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Category("General"), Description("Maximum Users Allowed")]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; MaxUsers {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _appConfigData.MaxUsers;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _appConfigData.MaxUsers = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;71&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;72&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;73&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; InstanceNode _database;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;74&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;75&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Category("Database"), Description("Database to use")]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;76&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Editor(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(ReferenceEditor), &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(UITypeEditor))]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;77&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ReferenceType(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(InstanceNode))]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;78&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Required]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;79&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; InstanceNode Database {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;80&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;81&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _database;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;82&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;83&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;84&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ILinkNodeService service = (ILinkNodeService)GetService(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(ILinkNodeService));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;85&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.Assert(&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;!=service, "Could not get the ILinkNodeService");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;86&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;._database = (InstanceNode)service.CreateReference(Database, &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ConfigurationNodeChangedEventHandler(&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.DatabaseRemoved), &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ConfigurationNodeChangedEventHandler(&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.DatabaseRenamed));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;87&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.Data.Database = _database.Name;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;88&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;89&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;90&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;91&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Category("General"), Description("Application state")]&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;92&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; AppConfigData.AppState State {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;93&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;94&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _appConfigData.State;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;95&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;96&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;97&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _appConfigData.State = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;98&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;99&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;100&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;101&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;102&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;103&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Configuration Tool Event Handlers&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;104&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;105&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; DatabaseRemoved(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, ConfigurationNodeChangedEventArgs e) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;106&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;._database = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;107&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;108&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;109&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; DatabaseRenamed(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, ConfigurationNodeChangedEventArgs e) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;110&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;._appConfigData.Database = e.Node.Name;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;111&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;112&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;113&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;114&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;115&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Private helper methods&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;116&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;117&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;118&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;119&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Used to create a blank database node if none exist in the application.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;120&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;121&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; CreateDatabaseSettingsNode() {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;122&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!DatabaseSettingsNodeExists()) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;123&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AddConfigurationSectionCommand cmd = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; AddConfigurationSectionCommand(Site, &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(DatabaseSettingsNode), DatabaseSettings.SectionName);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;124&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Execute(Hierarchy.RootNode);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;125&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;126&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;127&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;128&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;129&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;130&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Attempts to find a database settings node in the database and returns if it was successful&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;131&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;132&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;True if a DatabaseSettingsNode exist, and False if it doesn't.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;133&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; DatabaseSettingsNodeExists() {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;134&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DatabaseSettingsNode node = (DatabaseSettingsNode)Hierarchy.FindNodeByType(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(DatabaseSettingsNode));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;135&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;!=node);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;136&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;137&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;138&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;139&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Configuration Manager-related Overrides&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;140&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;141&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;142&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; This is called by the framework the each time an instance of this node is created from a previous saved state.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;143&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; This is used to find any dependent nodes in the configuration file and load their values for the user of this node.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;144&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;145&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; ResolveNodeReferences() {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;146&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DatabaseSettingsNode node = (DatabaseSettingsNode)Hierarchy.FindNodeByType(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(DatabaseSettingsNode));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;147&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.Assert(&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;!=node, "How is it that the datbase node doesn't exist?");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;148&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InstanceCollectionNode instCollNode = (InstanceCollectionNode)Hierarchy.FindNodeByType(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(InstanceCollectionNode));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;149&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.Database = (InstanceNode)Hierarchy.FindNodeByName(instCollNode, &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;._appConfigData.Database);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;150&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;151&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;152&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;153&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;154&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; This method is called after the main node is created and gives the node an opportunity to add any default child nodes if necessary.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;155&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;156&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; AddDefaultChildNodes() {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;157&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.AddDefaultChildNodes ();&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;158&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.CreateDatabaseSettingsNode();&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;159&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;160&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;161&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;162&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; This method is called when the configuration node is added to the heirarchy.&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;163&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Used in this case to set the name of the node, as it is a single-instance node that cannot be renamed by the user.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;164&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;165&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; OnSited() {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;166&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.OnSited ();&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;167&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Site.Name = "Application Configuration";&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;168&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;169&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;170&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;171&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;172&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Called when the node is renamed by the user.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;173&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;174&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="e"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;A &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ConfigurationNodeChangedEventArgs"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; instance, which is used to get the new name of the node.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;175&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; OnRenamed(ConfigurationNodeChangedEventArgs e) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;176&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.OnRenamed (e);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;177&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.Data.Name = e.Node.Name;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;178&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;179&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;180&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;181&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;182&lt;/span&gt;&amp;nbsp;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;There's a lot going on in this class, so we're going to take some time to understand it better.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;u&gt;System.ComponentModel Attributes &lt;/u&gt;&lt;/p&gt; &lt;p&gt;The first thing to notice are the attributes attached to the public properties of the class.&amp;nbsp; Most of these attributes are from the System.ComponentModel namespace, and are the same attributes you would use when create a design surface for a custom control.&amp;nbsp; The &lt;strong&gt;Browsable(false)&lt;/strong&gt; attribute tells the designer not to display the attribute in the designer, and the &lt;strong&gt;Category()&lt;/strong&gt;, &lt;strong&gt;Description(), Required()&lt;/strong&gt;, and &lt;strong&gt;ReadOnly()&lt;/strong&gt; attributes should be self-explanatory.&amp;nbsp; Many of the EntLib classes use &lt;strong&gt;SRCategory() &lt;/strong&gt;and&lt;strong&gt;&amp;nbsp;SRDescription() &lt;/strong&gt;attributes, which use the as-yet-unreleased StringResource custom tool to derive their values.&amp;nbsp; Hopefully that will be released to the public soon, because I like the concept of the StringResource tool and the SR* attributes.&lt;/p&gt; &lt;p&gt;One other set of attributes to note are the &lt;strong&gt;Editor()&lt;/strong&gt; attribute on the Database property, which specifies that the run-time configuration tool should use a special control to display the choices for this type.&amp;nbsp; The &lt;strong&gt;ReferenceEditor&lt;/strong&gt; class will filter the nodes based on the type provided, and only display those nodes that exist in the current config file.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update before posting: Someone &lt;a href="http://wah.onterra.net/blog/archive/2005/02/01/223.aspx"&gt;has now release a String Resource Tool&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;u&gt;The ILinkNodeService and Referencing Other Node Types&lt;/u&gt;&lt;/p&gt; &lt;p&gt;Note that the &lt;strong&gt;Database&lt;/strong&gt; property is of type InstanceNode, and that, when set, we use the ILinkNodeService instance provided by a call to the base class's &lt;strong&gt;GetService&lt;/strong&gt; method to inform the configuration manager that we'd like a reference to that node by calling the &lt;strong&gt;CreateReference&lt;/strong&gt; method.&amp;nbsp; Further, we pass this method a few delegates to handle changes in that node, including removal or renaming of the node.&amp;nbsp; In this way, whenever the user modifies our referenced node, we are informed of the change and can handle it appropriately.&lt;/p&gt; &lt;p&gt;&lt;u&gt;ConfigurationNode&amp;nbsp;Overrides&lt;/u&gt;&lt;/p&gt; &lt;p&gt;Our class overrides several members of the ConfigurationNode class to handle certain additional events that happen on all configuration nodes:&lt;/p&gt; &lt;ul dir="ltr"&gt; &lt;li&gt; &lt;div style="MARGIN-RIGHT: 0px"&gt;&lt;strong&gt;ResolveNodeReferences()&lt;/strong&gt; - This method is called to provide the ConfigurationNode an opportunity to find it's dependent nodes when it is loaded in the configuration manager. Because our configuration node uses a Database instance node, we take this opportunity to find the referenced node in the configuration heirarchy&amp;nbsp;and set our &lt;strong&gt;Database&lt;/strong&gt; property appropriately.&amp;nbsp; Note that, in theory, the &lt;strong&gt;FindNodeByName&lt;/strong&gt; call could fail if the user manually edits a configuration file, but, in that case, our &lt;strong&gt;Database&lt;/strong&gt; property should just be null and (if it were a required field) would force the user to pick a new node before the file would be saved.&lt;/div&gt; &lt;li&gt; &lt;div style="MARGIN-RIGHT: 0px"&gt;&lt;strong&gt;AddDefaultChildNodes()&lt;/strong&gt; - This method is called to make sure that, if your configuration node requires another node, you have an opportunity to create it if no node of that type exists.&amp;nbsp; Here, we call a private method that checks to see if any database nodes exist, and, if not, add a new, empty database instance to the configuration.&amp;nbsp; You can demonstrate this if you simply add a new application and then our "Test Application Configuration" node in the configuration manager.&amp;nbsp; You'll notice that the entire Data Access Application Block configuration section is automatically added to the configuration file.&lt;/div&gt; &lt;li&gt; &lt;div style="MARGIN-RIGHT: 0px"&gt;&lt;strong&gt;OnSited()&lt;/strong&gt; - This is called when your node is added to the configuration file.&amp;nbsp; In our case, we only want one instance of our settings node per application, and we don't want the user to be able to edit the name of the node, so we take this opportunity to set the name of the node in the configuration tree to "Application Configuration."&lt;/div&gt; &lt;li&gt; &lt;div style="MARGIN-RIGHT: 0px"&gt;&lt;strong&gt;OnRenamed()&lt;/strong&gt; - Called when the user renames the node.&amp;nbsp; Of course, our node is not renamable and, therefore, this method would never truly be called.&amp;nbsp; However, I kept it in the code so you would be aware of its existence and use.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p style="MARGIN-RIGHT: 0px"&gt;That's about it for the AppConfigNode class.&amp;nbsp; Hopefully you have a better idea of the magic behind the node.&amp;nbsp; Now, we just have to get the configuration manager to know how to serialize/deserialize our class and how we expect users to add it to our configuration file.&amp;nbsp; These tasks are accomplished by the &lt;strong&gt;AppConfigManager&lt;/strong&gt; class:&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Courier New"&gt;&lt;strong&gt;AppConfigManager.cs&lt;/strong&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Configuration;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Configuration.Design;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Configuration;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; EntLibConfigDemo {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Summary description for AppConfigManager.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; AppConfigManager: IConfigurationDesignManager {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Constructors&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;const&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; SectionName = "AppConfigData";&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; AppConfigManager() {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// No constructor logic required&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; IConfigurationDesignManager Members&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Registers configuration nodes and commands with the configuration manager&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Register(IServiceProvider serviceProvider) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// First, register the note type and data type with the node creation service&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RegisterNodeTypes(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Map the XML section name in the config file to our node type&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RegisterXmlIncludeTypes(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Create the new "Test Application Configuration" menu item for the application&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CreateCommands(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Adds our data to the configuration dictionary&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="configurationDictionary"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; BuildContext(IServiceProvider serviceProvider, ConfigurationDictionary configurationDictionary) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AppConfigNode node = GetAppConfigNode(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (node != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AppConfigData settings = node.Data;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; configurationDictionary[SectionName] = settings;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Called when the configuration manager finds an instance of the configuration node in the config file.&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Maps the data from the configuration file to the UI Configuration Node and adds it to the root node.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Open(IServiceProvider serviceProvider) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigurationContext configurationContext = ServiceHelper.GetCurrentConfigurationContext(serviceProvider); &lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (configurationContext.IsValidSection(SectionName)) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AppConfigNode appConfigNode = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;try&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AppConfigData data = configurationContext.GetConfiguration(SectionName) &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; AppConfigData;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (data != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// If an instance of our data type was successfully loaded, add our UI node to the root configurationNode&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; appConfigNode = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; AppConfigNode(data);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigurationNode configurationNode = ServiceHelper.GetCurrentRootNode(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; configurationNode.Nodes.Add(appConfigNode);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;71&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;72&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (ConfigurationException e) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;73&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceHelper.LogError(serviceProvider, appConfigNode, e);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;74&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;75&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;76&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;77&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;78&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;79&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;80&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;81&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Called when saving the configuration file.&amp;nbsp; Used to map the configuration node to its XML data representation and save the data to disk.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;82&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;83&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;84&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Save(IServiceProvider serviceProvider) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;85&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigurationContext configurationContext = ServiceHelper.GetCurrentConfigurationContext(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;86&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (configurationContext.IsValidSection(SectionName)) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;87&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AppConfigNode appConfigNode = GetAppConfigNode(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;88&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AppConfigData data = appConfigNode.Data;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;89&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (data != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;90&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;try&lt;/span&gt; {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;91&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; configurationContext.WriteConfiguration(SectionName, data);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;92&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;93&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (InvalidOperationException e) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;94&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceHelper.LogError(serviceProvider, appConfigNode, e);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;95&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;96&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;97&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;98&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;99&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;100&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;101&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;102&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;103&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Private implementation details&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;104&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;105&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;106&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Used to inform the Configuration Manager of our configuration node and data types.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;107&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;108&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;109&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; RegisterNodeTypes(IServiceProvider serviceProvider) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;110&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Get the node creation service so we can add our node type.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;111&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; INodeCreationService nodeCreationService = ServiceHelper.GetNodeCreationService(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;112&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Type nodeType = &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(AppConfigNode);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;113&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Creates a new entry to add to the node creation service.&amp;nbsp; The NoMultiples method creates a new entry that cannot have multiple instances in the same root node.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;114&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NodeCreationEntry entry = NodeCreationEntry.CreateNodeCreationEntryNoMultiples(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; AddChildNodeCommand(serviceProvider, nodeType), nodeType, &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(AppConfigData), "Application Configuration Data");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;115&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; nodeCreationService.AddNodeCreationEntry(entry);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;116&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;117&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;118&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;119&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Register the relation between our section name and the configuration node used to display it.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;120&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;121&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;122&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; RegisterXmlIncludeTypes(IServiceProvider serviceProvider) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;123&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IXmlIncludeTypeService xmlIts = (IXmlIncludeTypeService)serviceProvider.GetService(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(IXmlIncludeTypeService));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;124&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.Assert(&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;!=xmlIts, "Could not find IXmlIncludeTypeService");&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;125&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xmlIts.AddXmlIncludeType(SectionName,&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(AppConfigNode));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;126&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;127&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;128&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;129&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Create new menuitem to allow the user to add an instance of our configuration node.&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;130&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;131&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;132&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; CreateCommands(IServiceProvider serviceProvider) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;133&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IUIHierarchyService hierarchyService = ServiceHelper.GetUIHierarchyService(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;134&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IUIHierarchy currentHierarchy = hierarchyService.SelectedHierarchy;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;135&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; containsNode = currentHierarchy.ContainsNodeType(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(AppConfigNode));&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;136&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IMenuContainerService menuService = ServiceHelper.GetMenuContainerService(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;137&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigurationMenuItem item = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; ConfigurationMenuItem("Test Application Configuration", &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; AddConfigurationSectionCommand(serviceProvider, &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(AppConfigNode), SectionName), ServiceHelper.GetCurrentRootNode(serviceProvider), Shortcut.None, "Test Application Configuration", InsertionPoint.New);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;138&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; item.Enabled = !containsNode;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;139&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; menuService.MenuItems.Add(item);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;140&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;141&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;142&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;143&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Used to find the instance of the AppConfigNode for use in Load and Save methods&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;144&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;145&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;param name="serviceProvider"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;146&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;147&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; AppConfigNode GetAppConfigNode(IServiceProvider serviceProvider) {&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;148&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IUIHierarchy hierarchy = ServiceHelper.GetCurrentHierarchy(serviceProvider);&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;149&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (hierarchy == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;150&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;151&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; hierarchy.FindNodeByType(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(AppConfigNode)) &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; AppConfigNode;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;152&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;153&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;154&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;155&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;156&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;157&lt;/span&gt;&amp;nbsp;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;u&gt;IConfigurationDesignManager Ties It All Together&lt;/u&gt;&lt;/p&gt; &lt;p&gt;So you've got your data class, and you've got your node class, but you still can't see it in the configuration manager.&amp;nbsp; Although there are a few tricks left after this class is implemented, they are nothing more than attributes and post-build events.&amp;nbsp; It is the &lt;strong&gt;IConfigurationDesignManager&lt;/strong&gt; interface that lets you register your classes in the configuration manager and create new menu items in the appropriate places for those classes.&amp;nbsp; So, let's dig in:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Register()&lt;/strong&gt; - Most of the UI-level hookups happen in this method.&amp;nbsp; We register our Node types, which tells the Configuration Manager which visual classes we support in our assembly.&amp;nbsp; We register our XmlIncludeTypes, which tell the configuration tool how to serialize and deserialize our data classes.&amp;nbsp; And then, we add a new menu command to allow our uses to click on a "Test Application Configuration" menu item to add our new node to their configuration file.&amp;nbsp; These things all happen in the private implementation details section, which, because of its importance to the grand scheme, I will go into in more detail below. &lt;li&gt;&lt;strong&gt;BuildContext()&lt;/strong&gt; - Simply adds our data to the configuration dictionary.&amp;nbsp; Even &lt;A href="http://weblogs.asp.net/scottdensmore/archive/2005/02/01/364742.aspx"&gt;Scott Densmore&lt;/a&gt;&amp;nbsp;doesn't think the context is all that interesting. &lt;li&gt;&lt;strong&gt;Open()&lt;/strong&gt; - When the configuration manager finds the XML representation of one of our Data classes in the configuration file, it calls the Open method to let our manager map the data class to the appropriate visual node element. &lt;li&gt;&lt;strong&gt;Save()&lt;/strong&gt; - When saving the configuration file, this method is called and we write our data back out to the configuration file.&amp;nbsp; If any exceptions are thrown during the write, we log the exception so the configuration manager can display it to the user to fix.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;u&gt;The Guts (Private Implementation Details)&lt;/u&gt;&lt;/p&gt; &lt;p&gt;These methods are important as they are what drives the addition of our classes into the config tool in the &lt;strong&gt;IConfigurationDesignManager.Register()&lt;/strong&gt; method, so let's look a little more carefully at these:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;RegisterNodeTypes() - &lt;/strong&gt;This method retrieves the default instance of the NodeCreationService provided by the ServiceProvider passed to us (which will be implemented by the configuration management tool).&amp;nbsp; Once we have a node creation service, we register our AppConfigNode type as available for use, and mapping our AppConfigNode and our AppConfigData types together. &lt;li&gt;&lt;strong&gt;RegisterXmlIncludeTypes()&lt;/strong&gt; - Similar to the &lt;strong&gt;RegisterNodeTypes &lt;/strong&gt;method, we retrieve an instance of the XmlIncludeTypeService provided by the configuration manager and register our &lt;strong&gt;AppConfigData&lt;/strong&gt; type to be mapped to the given section name. &lt;li&gt;&lt;strong&gt;CreateCommands()&lt;/strong&gt; - Get the UI Heirarchy service, find the currently selected node in the heirarchy, and check to see if we already have an instance of our node (the &lt;strong&gt;containsNode &lt;/strong&gt;variable).&amp;nbsp; We'll use this information later to enable or disable our menu item based on this result.&amp;nbsp; Then, get the &lt;strong&gt;IMenuContainerService&lt;/strong&gt; instance and add a new menu command to the New menu (&lt;strong&gt;InsertionPoint.New&lt;/strong&gt;) at the root node level (&lt;strong&gt;ServiceHelper.GetCurrentRootNode()&lt;/strong&gt;) that will execute the &lt;strong&gt;AddConfigurationSectionCommand.ExecuteCore()&lt;/strong&gt; method to add our config section, using the display text "Test Application Configuration" and enabled/disabled based on if we have our node in the configuration already (&lt;strong&gt;containsNode&lt;/strong&gt;).&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;u&gt;What's left? (Answer: Attributes and Build Events)&lt;/u&gt;&lt;/p&gt; &lt;p&gt;Two things remain to get your assembly registered with the UI:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Add an attribute to your AssemblyInfo.cs file that tells the configuration manager UI which class(es) in your assembly implement the IConfigurationDesignManager interface.&amp;nbsp;The relevant sections of the file are: &lt;ul&gt; &lt;li&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Courier New"&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Reflection;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Runtime.CompilerServices;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Configuration.Design;&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: teal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;[assembly: ConfigurationDesignManager(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(EntLibConfigDemo.AppConfigManager))]&lt;/p&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;!--EndFragment--&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Push the DLL and any required reference DLLs to the EntLib\Bin directory (usually C:\Program Files\Microsoft Enterprise Library\Bin) so that the configuration manager can find them when it's loaded.&amp;nbsp; As I develop a new configuration management implementation, I tend to like to be able to easily debug these classes so I also push the PDB files.&amp;nbsp; If you run into issues, just add a call to &lt;strong&gt;System.Diagnostics.Debugger.Launch()&lt;/strong&gt; in your code and then, when the configuration tool loads your assembly and fires off the relevant method, you can force the debugger to attach to the configuration manager and find your error.&amp;nbsp; The file copy is accomplished using a post-build event on the project (mine is completely generic except for the location of EntLib, and so these two lines can be added to pretty much any project to move the target DLL to the correct directory): &lt;ul&gt; &lt;li&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 0pt; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 0pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; PADDING-TOP: 0pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Courier New"&gt; &lt;p style="MARGIN: 0px"&gt;copy $(TargetPath) "C:\Program Files\Microsoft Enterprise Library\bin"&lt;/p&gt; &lt;p style="MARGIN: 0px"&gt;copy $(ProjectDir)$(OutDir)*.pdb "C:\Program Files\Microsoft Enterprise Library\bin"&lt;/p&gt;&lt;!--EndFragment--&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So that walks you through everything you need to know to add a single-instance configuration node to the root of your configuration file and allow your end-user to edit it easily in the configuration manager.&amp;nbsp; OK, so it's nowhere close to everything, but I believe this should give you enough understanding to go "code spelunking" on your own.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Good luck.&amp;nbsp; The next installment will cover extending existing frameworks with your own implementations, which require custom configuration sections of their own to be integrated with the tool.&amp;nbsp; I'll use an AuthorizationProvider as an example, and you'll see that, once you grok the tool, it's not difficult to add your own configuration sections anywhere you need them.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=366015" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Cooking+School+_2800_Architecture+and+Lifecycle_2900_/default.aspx">Cooking School (Architecture and Lifecycle)</category><category domain="http://weblogs.asp.net/drohrer/archive/tags/Main+Courses+_28002E00_Net_2900_/default.aspx">Main Courses (.Net)</category></item><item><title>EntLib is released!</title><link>http://weblogs.asp.net/drohrer/archive/2005/01/28/362912.aspx</link><pubDate>Sat, 29 Jan 2005 02:08:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:362912</guid><dc:creator>drohrer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=362912</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/01/28/362912.aspx#comments</comments><description>&lt;p&gt;For those of you who have been following the development of Enterprise Library, it has been released.&amp;nbsp; Now, go forth and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0325B97A-9534-4349-8038-D56B38EC394C&amp;amp;displaylang=en"&gt;download.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The first in my series of EntLib presentations will be on creating extensions to Enterprise Libary that plug in to the configuration manager, and I hope to have it up in the next few days, so stay tuned!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=362912" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Cooking+School+_2800_Architecture+and+Lifecycle_2900_/default.aspx">Cooking School (Architecture and Lifecycle)</category></item><item><title>Enterprise Library presentation at Cincinnati .Net Users Group</title><link>http://weblogs.asp.net/drohrer/archive/2005/01/25/360549.aspx</link><pubDate>Wed, 26 Jan 2005 01:37:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:360549</guid><dc:creator>drohrer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/drohrer/rsscomments.aspx?PostID=360549</wfw:commentRss><comments>http://weblogs.asp.net/drohrer/archive/2005/01/25/360549.aspx#comments</comments><description>&lt;p&gt;After a very long hiatus, I've returned to the blogging world with a bang.&amp;nbsp; As my good friend James &lt;a href="http://dotavery.com/blog/archive/2005/01/24/2364.aspx"&gt;pointed out&lt;/a&gt;, I'll be giving a presentation on Enterprise Library, Microsoft's new consolidated application blocks, on February 15th at the &lt;a href="http://www.cinnug.org"&gt;Cincinnati .Net Users Group&lt;/a&gt;.&amp;nbsp; Once EntLib goes gold (this Friday, no less) I'm going to do a series of posts discussing its use in a consolidated application.&amp;nbsp; Additionally, there are some more esoteric areas of EntLib that deserve a look, and I'll cover some of those as well.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=360549" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/drohrer/archive/tags/Cooking+School+_2800_Architecture+and+Lifecycle_2900_/default.aspx">Cooking School (Architecture and Lifecycle)</category><category domain="http://weblogs.asp.net/drohrer/archive/tags/Main+Courses+_28002E00_Net_2900_/default.aspx">Main Courses (.Net)</category></item></channel></rss>