/// <summary> /// Sets the current <see cref="System.Configuration.Internal.IInternalConfigSystem"/> to be used by <see cref="ConfigurationManager"/>. /// </summary> /// <remarks> /// íf <paramref name="configSystem"/> implements <see cref="IChainableConfigSystem"/>, this method invokes /// <see cref="IChainableConfigSystem.SetInnerConfigurationSystem"/> on the new configSystem to chain them.<br/> /// <b> Note, that this method requires reflection on internals of <see cref="ConfigurationManager"/></b> /// </remarks> /// <param name="configSystem">the configuration system to set</param> /// <param name="enforce">bypasses the check if the current system has already been initialized</param> /// <returns>the previous config system, if any</returns> public static System.Configuration.Internal.IInternalConfigSystem SetConfigurationSystem(System.Configuration.Internal.IInternalConfigSystem configSystem, bool enforce) { FieldInfo s_configSystem = typeof(ConfigurationManager).GetField("s_configSystem", BindingFlags.Static | BindingFlags.NonPublic); // for MONO if (s_configSystem == null) { s_configSystem = typeof(ConfigurationManager).GetField("configSystem", BindingFlags.Static | BindingFlags.NonPublic); } System.Configuration.Internal.IInternalConfigSystem innerConfigSystem = (System.Configuration.Internal.IInternalConfigSystem)s_configSystem.GetValue(null); if (configSystem is IChainableConfigSystem) { ((IChainableConfigSystem)configSystem).SetInnerConfigurationSystem(innerConfigSystem); } try { MethodInfo mi = typeof(ConfigurationManager).GetMethod("SetConfigurationSystem", BindingFlags.Static | BindingFlags.NonPublic); if (mi == null) { mi = typeof(ConfigurationManager).GetMethod("ChangeConfigurationSystem", BindingFlags.Static | BindingFlags.NonPublic); mi.Invoke(null, new object[] { configSystem }); } else { if (enforce) { ResetConfigurationSystem(); } mi.Invoke(null, new object[] { configSystem, true }); } } catch (InvalidOperationException) { if (!enforce) { throw; } s_configSystem.SetValue(null, configSystem); } return(innerConfigSystem); }
public ConnectionStringPatcherConfigSystem(System.Configuration.Internal.IInternalConfigSystem internalConfigSystem) { this.internalConfigSystem = internalConfigSystem; }
public ConnectionStringPatcherConfigSystem(System.Configuration.Internal.IInternalConfigSystem internalConfigSystem) { this.internalConfigSystem = internalConfigSystem; }