//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ namespace System.Xaml.Hosting.Configuration { using System; using System.Web; using System.Configuration; using System.Diagnostics.CodeAnalysis; using System.Runtime; public sealed class HandlerElement : ConfigurationElement { static ConfigurationPropertyCollection properties = InitializeProperties(); Type httpHandlerCLRType; Type xamlRootElementClrType; static ConfigurationPropertyCollection InitializeProperties() { ConfigurationProperty handler = new ConfigurationProperty(XamlHostingConfiguration.HttpHandlerType, typeof(string), " ", null, new StringValidator(1), ConfigurationPropertyOptions.IsRequired); ConfigurationProperty xamlRoot = new ConfigurationProperty(XamlHostingConfiguration.XamlRootElementType, typeof(string), " ", null, new StringValidator(1), ConfigurationPropertyOptions.IsKey | ConfigurationPropertyOptions.IsRequired); ConfigurationPropertyCollection tempProperties = new ConfigurationPropertyCollection(); tempProperties.Add(xamlRoot); tempProperties.Add(handler); return tempProperties; } public HandlerElement() { } [SuppressMessage(FxCop.Category.Usage, FxCop.Rule.DoNotCallOverridableMethodsInConstructors, Justification = "This is enforced by configuration classes in framework library")] public HandlerElement(string xamlType, string handlerType) { XamlRootElementType = xamlType; HttpHandlerType = handlerType; } [ConfigurationProperty(XamlHostingConfiguration.HttpHandlerType, DefaultValue = " ", Options = ConfigurationPropertyOptions.IsRequired)] [StringValidator(MinLength = 1)] public string HttpHandlerType { get { return (string)base[XamlHostingConfiguration.HttpHandlerType]; } set { if (string.IsNullOrEmpty(value)) { value = string.Empty; } base[XamlHostingConfiguration.HttpHandlerType] = value; } } [ConfigurationProperty(XamlHostingConfiguration.XamlRootElementType, DefaultValue = " ", Options = ConfigurationPropertyOptions.IsKey | ConfigurationPropertyOptions.IsRequired)] [StringValidator(MinLength = 1)] public string XamlRootElementType { get { return (string)base[XamlHostingConfiguration.XamlRootElementType]; } set { if (string.IsNullOrEmpty(value)) { value = string.Empty; } base[XamlHostingConfiguration.XamlRootElementType] = value; } } internal string Key { get { return XamlRootElementType; } } protected override ConfigurationPropertyCollection Properties { get { return properties; } } internal Type LoadHttpHandlerType() { if (this.httpHandlerCLRType == null) { this.httpHandlerCLRType = Type.GetType(HttpHandlerType, true); } return this.httpHandlerCLRType; } internal Type LoadXamlRootElementType() { if (this.xamlRootElementClrType == null) { this.xamlRootElementClrType = Type.GetType(XamlRootElementType, true); } return this.xamlRootElementClrType; } } }