IdnElement
Provides the configuration setting for International Domain Name (IDN) processing in the Uri class.
using System.ComponentModel;
using System.Globalization;
namespace System.Configuration
{
public sealed class IdnElement : ConfigurationElement
{
private class UriIdnScopeTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(string))
return true;
return base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
string text = value as string;
if (text != null) {
switch (text.ToLowerInvariant()) {
case "all":
return UriIdnScope.All;
case "none":
return UriIdnScope.None;
case "allexceptintranet":
return UriIdnScope.AllExceptIntranet;
}
}
return base.ConvertFrom(context, culture, value);
}
}
internal const UriIdnScope EnabledDefaultValue = UriIdnScope.None;
private readonly ConfigurationPropertyCollection _properties = new ConfigurationPropertyCollection();
private readonly ConfigurationProperty _enabled = new ConfigurationProperty("enabled", typeof(UriIdnScope), UriIdnScope.None, new UriIdnScopeTypeConverter(), null, ConfigurationPropertyOptions.None);
protected internal override ConfigurationPropertyCollection Properties => _properties;
[ConfigurationProperty("enabled", DefaultValue = UriIdnScope.None)]
public UriIdnScope Enabled {
get {
return (UriIdnScope)base[_enabled];
}
set {
base[_enabled] = value;
}
}
public IdnElement()
{
_properties.Add(_enabled);
}
}
}