// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. using System.Configuration; using System.Diagnostics.CodeAnalysis; using System.Web.Configuration; namespace System.Web.WebPages.Razor.Configuration { public class RazorPagesSection : ConfigurationSection { public static readonly string SectionName = RazorWebSectionGroup.GroupName + "/pages"; private static readonly ConfigurationProperty _pageBaseTypeProperty = new ConfigurationProperty("pageBaseType", typeof(string), null, ConfigurationPropertyOptions.IsRequired); private static readonly ConfigurationProperty _namespacesProperty = new ConfigurationProperty("namespaces", typeof(NamespaceCollection), null, ConfigurationPropertyOptions.IsRequired); private bool _pageBaseTypeSet = false; private bool _namespacesSet = false; private string _pageBaseType; private NamespaceCollection _namespaces; [ConfigurationProperty("pageBaseType", IsRequired = true)] public string PageBaseType { get { return _pageBaseTypeSet ? _pageBaseType : (string)this[_pageBaseTypeProperty]; } set { _pageBaseType = value; _pageBaseTypeSet = true; } } [ConfigurationProperty("namespaces", IsRequired = true)] [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "Being able to set this property is extremely useful for third-parties who are testing components which interact with the Razor configuration system")] public NamespaceCollection Namespaces { get { return _namespacesSet ? _namespaces : (NamespaceCollection)this[_namespacesProperty]; } set { _namespaces = value; _namespacesSet = true; } } } }