Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Configuration / System / Configuration / Configuration.cs / 1305376 / Configuration.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using ClassConfiguration = System.Configuration.Configuration; using System.Collections; using System.Configuration; using System.Configuration.Internal; using System.IO; using System.Reflection; using System.Security; using System.Security.Permissions; using System.Threading; using System.Runtime.Versioning; namespace System.Configuration { // // An instance of the Configuration class represents a single level // in the configuration hierarchy. Its contents can be edited and // saved to disk. // // It is not thread safe for writing. // public sealed class Configuration { private Type _typeConfigHost; // type of config host private object[] _hostInitConfigurationParams; // params to init config host private InternalConfigRoot _configRoot; // root of this configuration hierarchy private MgmtConfigurationRecord _configRecord; // config record for this level in the hierarchy private ConfigurationSectionGroup _rootSectionGroup; // section group for the root of all sections private ConfigurationLocationCollection _locations; // support for ConfigurationLocationsCollection private ContextInformation _evalContext; // evaluation context private Func_TypeStringTransformer = null; private Func _AssemblyStringTransformer = null; private bool _TypeStringTransformerIsSet = false; private bool _AssemblyStringTransformerIsSet = false; private FrameworkName _TargetFramework = null; private Stack _SectionsStack = null; internal Configuration(string locationSubPath, Type typeConfigHost, params object[] hostInitConfigurationParams) { _typeConfigHost = typeConfigHost; _hostInitConfigurationParams = hostInitConfigurationParams; _configRoot = new InternalConfigRoot(this); IInternalConfigHost configHost = (IInternalConfigHost) TypeUtil.CreateInstanceWithReflectionPermission(typeConfigHost); // Wrap the host with the UpdateConfigHost to support SaveAs. IInternalConfigHost updateConfigHost = new UpdateConfigHost(configHost); ((IInternalConfigRoot)_configRoot).Init(updateConfigHost, true); // // Set the configuration paths for this Configuration. // We do this in a separate step so that the WebConfigurationHost // can use this object's _configRoot to get the section, // which is used in it's MapPath implementation. // string configPath, locationConfigPath; configHost.InitForConfiguration(ref locationSubPath, out configPath, out locationConfigPath, _configRoot, hostInitConfigurationParams); if (!String.IsNullOrEmpty(locationSubPath) && !updateConfigHost.SupportsLocation) { throw ExceptionUtil.UnexpectedError("Configuration::ctor"); } if (String.IsNullOrEmpty(locationSubPath) != String.IsNullOrEmpty(locationConfigPath)) { throw ExceptionUtil.UnexpectedError("Configuration::ctor"); } // Get the configuration record for this config file. _configRecord = (MgmtConfigurationRecord) _configRoot.GetConfigRecord(configPath); // // Create another MgmtConfigurationRecord for the location that is a child of the above record. // Note that this does not match the resolution hiearchy that is used at runtime. // if (!String.IsNullOrEmpty(locationSubPath)) { _configRecord = MgmtConfigurationRecord.Create( _configRoot, _configRecord, locationConfigPath, locationSubPath); } // // Throw if the config record we created contains global errors. // _configRecord.ThrowIfInitErrors(); } // // Create a new instance of Configuration for the locationSubPath, // with the initialization parameters that were used to create this configuration. // internal Configuration OpenLocationConfiguration(string locationSubPath) { return new Configuration(locationSubPath, _typeConfigHost, _hostInitConfigurationParams); } // public properties public AppSettingsSection AppSettings { get { return (AppSettingsSection) GetSection("appSettings"); } } public ConnectionStringsSection ConnectionStrings { get { return (ConnectionStringsSection) GetSection("connectionStrings"); } } public string FilePath { get { return _configRecord.ConfigurationFilePath; } } public bool HasFile { get { return _configRecord.HasStream; } } public ConfigurationLocationCollection Locations { get { if (_locations == null) { _locations = _configRecord.GetLocationCollection(this); } return _locations; } } public ContextInformation EvaluationContext { get { if (_evalContext == null) { _evalContext = new ContextInformation(_configRecord); } return _evalContext; } } public ConfigurationSectionGroup RootSectionGroup { get { if (_rootSectionGroup == null) { _rootSectionGroup = new ConfigurationSectionGroup(); _rootSectionGroup.RootAttachToConfigurationRecord(_configRecord); } return _rootSectionGroup; } } public ConfigurationSectionCollection Sections { get { return RootSectionGroup.Sections; } } public ConfigurationSectionGroupCollection SectionGroups { get { return RootSectionGroup.SectionGroups; } } // public methods public ConfigurationSection GetSection(string sectionName) { ConfigurationSection section = (ConfigurationSection) _configRecord.GetSection(sectionName); return section; } public ConfigurationSectionGroup GetSectionGroup(string sectionGroupName) { ConfigurationSectionGroup sectionGroup = _configRecord.GetSectionGroup(sectionGroupName); return sectionGroup; } // NamespaceDeclared // // Is the namespace declared in the file or not? // // ie. xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" // (currently this is the only one we allow) // // get - Return if it was declared in the file. // set - Set if we should save the namespace or not // public bool NamespaceDeclared { get { return _configRecord.NamespacePresent; } set { _configRecord.NamespacePresent = value; } } public void Save() { SaveAsImpl(null, ConfigurationSaveMode.Modified, false); } public void Save(ConfigurationSaveMode saveMode) { SaveAsImpl(null, saveMode, false); } public void Save(ConfigurationSaveMode saveMode, bool forceSaveAll) { SaveAsImpl(null, saveMode, forceSaveAll); } public void SaveAs(string filename) { SaveAs(filename, ConfigurationSaveMode.Modified, false); } public void SaveAs(string filename, ConfigurationSaveMode saveMode) { SaveAs(filename, saveMode, false); } public void SaveAs(string filename, ConfigurationSaveMode saveMode, bool forceSaveAll) { if (String.IsNullOrEmpty(filename)) { throw ExceptionUtil.ParameterNullOrEmpty("filename"); } SaveAsImpl(filename, saveMode, forceSaveAll); } private void SaveAsImpl(string filename, ConfigurationSaveMode saveMode, bool forceSaveAll) { if (String.IsNullOrEmpty(filename)) { filename = null; } else { filename = System.IO.Path.GetFullPath(filename); } if (forceSaveAll) { ForceGroupsRecursive(RootSectionGroup); } _configRecord.SaveAs(filename, saveMode, forceSaveAll); } // Force all sections and section groups to be instantiated. private void ForceGroupsRecursive(ConfigurationSectionGroup group) { foreach (ConfigurationSection configSection in group.Sections) { // Force the section to be read into the cache ConfigurationSection section = group.Sections[configSection.SectionInformation.Name]; } foreach (ConfigurationSectionGroup sectionGroup in group.SectionGroups) { ForceGroupsRecursive(group.SectionGroups[sectionGroup.Name]); } } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// public System.Func TypeStringTransformer { get { return _TypeStringTransformer; } [ConfigurationPermission(SecurityAction.Demand, Unrestricted=true)] set { if (_TypeStringTransformer != value) { _TypeStringTransformerIsSet = (value != null); _TypeStringTransformer = value; } } } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// public System.Func AssemblyStringTransformer { get { return _AssemblyStringTransformer; } [ConfigurationPermission(SecurityAction.Demand, Unrestricted=true)] set { if (_AssemblyStringTransformer != value) { _AssemblyStringTransformerIsSet = (value != null); _AssemblyStringTransformer = value; } } } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// public FrameworkName TargetFramework { get { return _TargetFramework; } [ConfigurationPermission(SecurityAction.Demand, Unrestricted=true)] set { _TargetFramework = value; } } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// internal bool TypeStringTransformerIsSet { get { return _TypeStringTransformerIsSet; }} ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// internal bool AssemblyStringTransformerIsSet { get { return _AssemblyStringTransformerIsSet; }} ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// internal Stack SectionsStack { get { if (_SectionsStack == null) _SectionsStack = new Stack(); return _SectionsStack; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using ClassConfiguration = System.Configuration.Configuration; using System.Collections; using System.Configuration; using System.Configuration.Internal; using System.IO; using System.Reflection; using System.Security; using System.Security.Permissions; using System.Threading; using System.Runtime.Versioning; namespace System.Configuration { // // An instance of the Configuration class represents a single level // in the configuration hierarchy. Its contents can be edited and // saved to disk. // // It is not thread safe for writing. // public sealed class Configuration { private Type _typeConfigHost; // type of config host private object[] _hostInitConfigurationParams; // params to init config host private InternalConfigRoot _configRoot; // root of this configuration hierarchy private MgmtConfigurationRecord _configRecord; // config record for this level in the hierarchy private ConfigurationSectionGroup _rootSectionGroup; // section group for the root of all sections private ConfigurationLocationCollection _locations; // support for ConfigurationLocationsCollection private ContextInformation _evalContext; // evaluation context private Func_TypeStringTransformer = null; private Func _AssemblyStringTransformer = null; private bool _TypeStringTransformerIsSet = false; private bool _AssemblyStringTransformerIsSet = false; private FrameworkName _TargetFramework = null; private Stack _SectionsStack = null; internal Configuration(string locationSubPath, Type typeConfigHost, params object[] hostInitConfigurationParams) { _typeConfigHost = typeConfigHost; _hostInitConfigurationParams = hostInitConfigurationParams; _configRoot = new InternalConfigRoot(this); IInternalConfigHost configHost = (IInternalConfigHost) TypeUtil.CreateInstanceWithReflectionPermission(typeConfigHost); // Wrap the host with the UpdateConfigHost to support SaveAs. IInternalConfigHost updateConfigHost = new UpdateConfigHost(configHost); ((IInternalConfigRoot)_configRoot).Init(updateConfigHost, true); // // Set the configuration paths for this Configuration. // We do this in a separate step so that the WebConfigurationHost // can use this object's _configRoot to get the section, // which is used in it's MapPath implementation. // string configPath, locationConfigPath; configHost.InitForConfiguration(ref locationSubPath, out configPath, out locationConfigPath, _configRoot, hostInitConfigurationParams); if (!String.IsNullOrEmpty(locationSubPath) && !updateConfigHost.SupportsLocation) { throw ExceptionUtil.UnexpectedError("Configuration::ctor"); } if (String.IsNullOrEmpty(locationSubPath) != String.IsNullOrEmpty(locationConfigPath)) { throw ExceptionUtil.UnexpectedError("Configuration::ctor"); } // Get the configuration record for this config file. _configRecord = (MgmtConfigurationRecord) _configRoot.GetConfigRecord(configPath); // // Create another MgmtConfigurationRecord for the location that is a child of the above record. // Note that this does not match the resolution hiearchy that is used at runtime. // if (!String.IsNullOrEmpty(locationSubPath)) { _configRecord = MgmtConfigurationRecord.Create( _configRoot, _configRecord, locationConfigPath, locationSubPath); } // // Throw if the config record we created contains global errors. // _configRecord.ThrowIfInitErrors(); } // // Create a new instance of Configuration for the locationSubPath, // with the initialization parameters that were used to create this configuration. // internal Configuration OpenLocationConfiguration(string locationSubPath) { return new Configuration(locationSubPath, _typeConfigHost, _hostInitConfigurationParams); } // public properties public AppSettingsSection AppSettings { get { return (AppSettingsSection) GetSection("appSettings"); } } public ConnectionStringsSection ConnectionStrings { get { return (ConnectionStringsSection) GetSection("connectionStrings"); } } public string FilePath { get { return _configRecord.ConfigurationFilePath; } } public bool HasFile { get { return _configRecord.HasStream; } } public ConfigurationLocationCollection Locations { get { if (_locations == null) { _locations = _configRecord.GetLocationCollection(this); } return _locations; } } public ContextInformation EvaluationContext { get { if (_evalContext == null) { _evalContext = new ContextInformation(_configRecord); } return _evalContext; } } public ConfigurationSectionGroup RootSectionGroup { get { if (_rootSectionGroup == null) { _rootSectionGroup = new ConfigurationSectionGroup(); _rootSectionGroup.RootAttachToConfigurationRecord(_configRecord); } return _rootSectionGroup; } } public ConfigurationSectionCollection Sections { get { return RootSectionGroup.Sections; } } public ConfigurationSectionGroupCollection SectionGroups { get { return RootSectionGroup.SectionGroups; } } // public methods public ConfigurationSection GetSection(string sectionName) { ConfigurationSection section = (ConfigurationSection) _configRecord.GetSection(sectionName); return section; } public ConfigurationSectionGroup GetSectionGroup(string sectionGroupName) { ConfigurationSectionGroup sectionGroup = _configRecord.GetSectionGroup(sectionGroupName); return sectionGroup; } // NamespaceDeclared // // Is the namespace declared in the file or not? // // ie. xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" // (currently this is the only one we allow) // // get - Return if it was declared in the file. // set - Set if we should save the namespace or not // public bool NamespaceDeclared { get { return _configRecord.NamespacePresent; } set { _configRecord.NamespacePresent = value; } } public void Save() { SaveAsImpl(null, ConfigurationSaveMode.Modified, false); } public void Save(ConfigurationSaveMode saveMode) { SaveAsImpl(null, saveMode, false); } public void Save(ConfigurationSaveMode saveMode, bool forceSaveAll) { SaveAsImpl(null, saveMode, forceSaveAll); } public void SaveAs(string filename) { SaveAs(filename, ConfigurationSaveMode.Modified, false); } public void SaveAs(string filename, ConfigurationSaveMode saveMode) { SaveAs(filename, saveMode, false); } public void SaveAs(string filename, ConfigurationSaveMode saveMode, bool forceSaveAll) { if (String.IsNullOrEmpty(filename)) { throw ExceptionUtil.ParameterNullOrEmpty("filename"); } SaveAsImpl(filename, saveMode, forceSaveAll); } private void SaveAsImpl(string filename, ConfigurationSaveMode saveMode, bool forceSaveAll) { if (String.IsNullOrEmpty(filename)) { filename = null; } else { filename = System.IO.Path.GetFullPath(filename); } if (forceSaveAll) { ForceGroupsRecursive(RootSectionGroup); } _configRecord.SaveAs(filename, saveMode, forceSaveAll); } // Force all sections and section groups to be instantiated. private void ForceGroupsRecursive(ConfigurationSectionGroup group) { foreach (ConfigurationSection configSection in group.Sections) { // Force the section to be read into the cache ConfigurationSection section = group.Sections[configSection.SectionInformation.Name]; } foreach (ConfigurationSectionGroup sectionGroup in group.SectionGroups) { ForceGroupsRecursive(group.SectionGroups[sectionGroup.Name]); } } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// public System.Func TypeStringTransformer { get { return _TypeStringTransformer; } [ConfigurationPermission(SecurityAction.Demand, Unrestricted=true)] set { if (_TypeStringTransformer != value) { _TypeStringTransformerIsSet = (value != null); _TypeStringTransformer = value; } } } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// public System.Func AssemblyStringTransformer { get { return _AssemblyStringTransformer; } [ConfigurationPermission(SecurityAction.Demand, Unrestricted=true)] set { if (_AssemblyStringTransformer != value) { _AssemblyStringTransformerIsSet = (value != null); _AssemblyStringTransformer = value; } } } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// public FrameworkName TargetFramework { get { return _TargetFramework; } [ConfigurationPermission(SecurityAction.Demand, Unrestricted=true)] set { _TargetFramework = value; } } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// internal bool TypeStringTransformerIsSet { get { return _TypeStringTransformerIsSet; }} ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// internal bool AssemblyStringTransformerIsSet { get { return _AssemblyStringTransformerIsSet; }} ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// internal Stack SectionsStack { get { if (_SectionsStack == null) _SectionsStack = new Stack(); return _SectionsStack; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PropertyGroupDescription.cs
- Font.cs
- TypeConverterMarkupExtension.cs
- AuthenticationModulesSection.cs
- FormViewModeEventArgs.cs
- XPathNavigatorReader.cs
- _NestedSingleAsyncResult.cs
- VariableElement.cs
- XmlBinaryReader.cs
- NullRuntimeConfig.cs
- GregorianCalendarHelper.cs
- SecurityCookieModeValidator.cs
- XmlText.cs
- Publisher.cs
- PerformanceCounterPermissionAttribute.cs
- MouseGestureValueSerializer.cs
- HttpServerVarsCollection.cs
- MenuItemBinding.cs
- DataServiceException.cs
- ActivityWithResult.cs
- ScriptRegistrationManager.cs
- TextTreeFixupNode.cs
- UnsafeNativeMethods.cs
- LinqDataSourceUpdateEventArgs.cs
- PngBitmapDecoder.cs
- InvalidComObjectException.cs
- DrawListViewColumnHeaderEventArgs.cs
- XmlSchemaImport.cs
- PersonalizationAdministration.cs
- Iis7Helper.cs
- ResourceDictionary.cs
- CodeGenerator.cs
- CodeMemberField.cs
- GenericTextProperties.cs
- BufferedStream.cs
- InternalResources.cs
- SQLDoubleStorage.cs
- EditorAttributeInfo.cs
- AdPostCacheSubstitution.cs
- EntryIndex.cs
- OpenFileDialog.cs
- TextTreeRootNode.cs
- DataSourceView.cs
- XmlSchemaSimpleTypeUnion.cs
- WebPartEditorOkVerb.cs
- Shape.cs
- StretchValidation.cs
- ComboBoxDesigner.cs
- TextRunCache.cs
- MetadataExchangeBindings.cs
- CustomErrorsSectionWrapper.cs
- SharedConnectionListener.cs
- Vector3DKeyFrameCollection.cs
- ProgressBarRenderer.cs
- OutputCacheSettings.cs
- DynamicPhysicalDiscoSearcher.cs
- AttributeUsageAttribute.cs
- SelectionHighlightInfo.cs
- ServiceObjectContainer.cs
- configsystem.cs
- ManagementExtension.cs
- webeventbuffer.cs
- SharedPersonalizationStateInfo.cs
- Inflater.cs
- ParagraphResult.cs
- OuterGlowBitmapEffect.cs
- PrintPreviewGraphics.cs
- ToolboxDataAttribute.cs
- InvalidateEvent.cs
- PolyQuadraticBezierSegment.cs
- PermissionSet.cs
- ScrollItemPattern.cs
- TableNameAttribute.cs
- SettingsAttributes.cs
- Vector3D.cs
- SqlBooleanMismatchVisitor.cs
- ExportOptions.cs
- DbQueryCommandTree.cs
- DataGridRow.cs
- TreeNode.cs
- UrlAuthorizationModule.cs
- UpdatePanel.cs
- GPStream.cs
- XmlILStorageConverter.cs
- ThaiBuddhistCalendar.cs
- XappLauncher.cs
- ADRoleFactoryConfiguration.cs
- SamlDoNotCacheCondition.cs
- PropertyInformationCollection.cs
- SliderAutomationPeer.cs
- FunctionQuery.cs
- XmlSchemaSimpleTypeList.cs
- _AutoWebProxyScriptWrapper.cs
- DynamicILGenerator.cs
- ObjectConverter.cs
- SnapshotChangeTrackingStrategy.cs
- ExpressionPrinter.cs
- SafeNativeMethods.cs
- SQLMoneyStorage.cs
- RubberbandSelector.cs