Merge pull request #231 from linquize/a853199c497bb0977970974303fac7e42080809d
[mono.git] / mcs / class / System.Configuration / System.Configuration / ClientConfigurationSystem.cs
index f4bdb5dbbc67428fe13e6df43e3055974886c9a1..f3e93f13426988277f993aa93b3a74fd96687b4d 100644 (file)
@@ -32,18 +32,35 @@ using System;
 using System.Reflection;
 using System.Configuration.Internal;
 
-namespace System.Configuration {
-
+namespace System.Configuration
+{
        internal class ClientConfigurationSystem : IInternalConfigSystem
        {
-               object IInternalConfigSystem.GetSection (string configKey)
+               Configuration cfg;
+
+               public ClientConfigurationSystem ()
                {
-                       Assembly a = Assembly.GetEntryAssembly();
+               }
 
-                       Configuration cfg = ConfigurationManager.OpenExeConfigurationInternal (ConfigurationUserLevel.None, a, AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
-                       if (cfg == null) return null;
+               private Configuration Configuration {
+                       get {
+                               if (cfg == null) {
+                                       Assembly a = Assembly.GetEntryAssembly();
 
-                       ConfigurationSection s = cfg.GetSection (configKey);
+                                       try {
+                                               cfg = ConfigurationManager.OpenExeConfigurationInternal (
+                                                       ConfigurationUserLevel.None, a, null);
+                                       } catch (Exception ex) {
+                                               throw new ConfigurationErrorsException ("Error Initializing the configuration system.", ex);
+                                       }
+                               }
+                               return cfg;
+                       }
+               }
+
+               object IInternalConfigSystem.GetSection (string configKey)
+               {
+                       ConfigurationSection s = Configuration.GetSection (configKey);
                        return s != null ? s.GetRuntimeObject () : null;
                }