Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Clipboard.cs
- RemoteX509AsymmetricSecurityKey.cs
- ObjectDisposedException.cs
- Hashtable.cs
- Convert.cs
- NativeCompoundFileAPIs.cs
- ExportOptions.cs
- EntityDataSourceDataSelectionPanel.designer.cs
- PagesChangedEventArgs.cs
- EntityClientCacheEntry.cs
- WizardPanelChangingEventArgs.cs
- DataListItemEventArgs.cs
- WindowsSecurityToken.cs
- ClientData.cs
- DirectoryNotFoundException.cs
- DataGridViewRowHeaderCell.cs
- _ChunkParse.cs
- SchemaImporterExtensionElement.cs
- TextServicesLoader.cs
- GridViewColumnCollectionChangedEventArgs.cs
- StagingAreaInputItem.cs
- SocketAddress.cs
- SecurityHelper.cs
- XmlDictionaryReaderQuotas.cs
- ImageSource.cs
- ReturnType.cs
- Context.cs
- SectionInput.cs
- DataGridLinkButton.cs
- TypeDelegator.cs
- HttpModuleActionCollection.cs
- PackageDigitalSignature.cs
- Win32SafeHandles.cs
- AssociationEndMember.cs
- RequestStatusBarUpdateEventArgs.cs
- SecUtil.cs
- XmlValueConverter.cs
- AutomationFocusChangedEventArgs.cs
- PropertyChangingEventArgs.cs
- InternalBufferOverflowException.cs
- ClientRolePrincipal.cs
- ScrollBar.cs
- ParsedAttributeCollection.cs
- CustomLineCap.cs
- RelationshipEndMember.cs
- MarkedHighlightComponent.cs
- DataProviderNameConverter.cs
- ShapingEngine.cs
- Color.cs
- TypeConstant.cs
- UnitControl.cs
- XmlStreamNodeWriter.cs
- SqlCachedBuffer.cs
- AuthenticationException.cs
- DetailsViewDesigner.cs
- StyleSelector.cs
- cache.cs
- TemplateBamlTreeBuilder.cs
- IndexedString.cs
- SmtpFailedRecipientsException.cs
- AttributeUsageAttribute.cs
- LoginAutoFormat.cs
- CollectionBase.cs
- ColorDialog.cs
- RelationshipFixer.cs
- XsltContext.cs
- HtmlMeta.cs
- DataGridViewSelectedCellCollection.cs
- DbConnectionHelper.cs
- RijndaelCryptoServiceProvider.cs
- DataSourceCacheDurationConverter.cs
- TextDocumentView.cs
- DataSourceCache.cs
- BitmapEffectInput.cs
- DefaultValueAttribute.cs
- WorkflowMessageEventArgs.cs
- HostExecutionContextManager.cs
- ServiceOperationWrapper.cs
- PhonemeEventArgs.cs
- Image.cs
- CompilationRelaxations.cs
- HttpApplication.cs
- PreservationFileReader.cs
- RequestTimeoutManager.cs
- HttpResponseInternalWrapper.cs
- RelatedImageListAttribute.cs
- CustomAttributeBuilder.cs
- CompoundFileReference.cs
- KnownAssembliesSet.cs
- VectorAnimation.cs
- ChannelTerminatedException.cs
- Scheduler.cs
- SqlDependencyListener.cs
- TextPenaltyModule.cs
- Transform3DGroup.cs
- XmlDownloadManager.cs
- XmlText.cs
- NegationPusher.cs
- PeerNameResolver.cs
- DataTrigger.cs