e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
118 lines
3.9 KiB
C#
118 lines
3.9 KiB
C#
//------------------------------------------------------------------------------
|
|
// 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;
|
|
}
|
|
}
|
|
}
|
|
|