ConfigurationConverterBase Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
A classe base para os tipos de conversores de configuração.
public ref class ConfigurationConverterBase abstract : System::ComponentModel::TypeConverter
public abstract class ConfigurationConverterBase : System.ComponentModel.TypeConverter
type ConfigurationConverterBase = class
inherit TypeConverter
Public MustInherit Class ConfigurationConverterBase
Inherits TypeConverter
- Herança
- Derivado
Exemplos
Os seguintes exemplos de código mostram como derivar a partir da ConfigurationConverterBase classe para criar um tipo de conversor personalizado TimeSpan . Além disso, os exemplos mostram como usar este tipo numa secção personalizada.
O exemplo de código seguinte mostra como criar um tipo de conversor personalizado TimeSpan a partir da ConfigurationConverterBase classe.
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Globalization;
using System.ComponentModel;
public sealed class CustomTimeSpanMinutesConverter :
ConfigurationConverterBase
{
internal bool ValidateType(object value,
Type expected)
{
bool result;
if ((value != null) &&
(value.GetType() != expected))
result = false;
else
result = true;
return result;
}
public override bool CanConvertTo(
ITypeDescriptorContext ctx, Type type)
{
return (type == typeof(string));
}
public override bool CanConvertFrom(
ITypeDescriptorContext ctx, Type type)
{
return (type == typeof(string));
}
public override object ConvertTo(
ITypeDescriptorContext ctx, CultureInfo ci,
object value, Type type)
{
ValidateType(value, typeof(TimeSpan));
long data = (long)(((TimeSpan)value).TotalMinutes);
return data.ToString(CultureInfo.InvariantCulture);
}
public override object ConvertFrom(
ITypeDescriptorContext ctx, CultureInfo ci, object data)
{
long min = long.Parse((string)data,
CultureInfo.InvariantCulture);
return TimeSpan.FromMinutes((double)min);
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.Globalization
Imports System.ComponentModel
NotInheritable Public Class CustomTimeSpanMinutesConverter
Inherits ConfigurationConverterBase
Friend Function ValidateType(ByVal value As Object, _
ByVal expected As Type) As Boolean
Dim result As Boolean
If Not (value Is Nothing) _
AndAlso value.ToString() <> expected.ToString() Then
result = False
Else
result = True
End If
Return result
End Function 'ValidateType
Public Overrides Function CanConvertTo( _
ByVal ctx As ITypeDescriptorContext, _
ByVal type As Type) As Boolean
Return (type.ToString() = GetType(String).ToString())
End Function 'CanConvertTo
Public Overrides Function CanConvertFrom( _
ByVal ctx As ITypeDescriptorContext, _
ByVal type As Type) As Boolean
Return (type.ToString() = GetType(String).ToString())
End Function 'CanConvertFrom
Public Overrides Function ConvertTo( _
ByVal ctx As ITypeDescriptorContext, _
ByVal ci As CultureInfo, ByVal value As Object, _
ByVal type As Type) As Object
ValidateType(value, GetType(TimeSpan))
Dim data As Long = _
Fix(CType(value, TimeSpan).TotalMinutes)
Return data.ToString(CultureInfo.InvariantCulture)
End Function 'ConvertTo
Public Overrides Function ConvertFrom( _
ByVal ctx As ITypeDescriptorContext, _
ByVal ci As CultureInfo, ByVal data As Object) As Object
Dim min As Long = _
Long.Parse(CStr(data), CultureInfo.InvariantCulture)
Return TimeSpan.FromMinutes(System.Convert.ToDouble(min))
End Function 'ConvertFrom
End Class
O exemplo de código seguinte mostra como definir uma secção personalizada que utiliza o conversor personalizado TimeSpan anterior.
// Define a custom section.
public sealed class CustomSection :
ConfigurationSection
{
public CustomSection()
{
}
[ConfigurationProperty("fileName", DefaultValue=" default.txt ")]
[TypeConverter(typeof(WhiteSpaceTrimStringConverter))]
public String FileName
{
get
{
return (String)this["fileName"];
}
set
{
this["fileName"] = value;
}
}
[ConfigurationProperty("maxIdleTime")]
[TypeConverter(typeof(CustomizedTimeSpanMinutesConverter))]
public TimeSpan MaxIdleTime
{
get
{
return (TimeSpan)this["maxIdleTime"];
}
set
{
this["maxIdleTime"] = value;
}
}
[ConfigurationProperty("timeDelay",
DefaultValue = "infinite")]
[TypeConverter(typeof(InfiniteTimeSpanConverter))]
public TimeSpan TimeDelay
{
get
{
return (TimeSpan)this["timeDelay"];
}
set
{
this["timeDelay"] = value;
}
}
[ConfigurationProperty("cdStr",
DefaultValue = "str0, str1",
IsRequired = true)]
[TypeConverter(typeof(
CommaDelimitedStringCollectionConverter))]
public StringCollection CdStr
{
get
{
return (StringCollection)this["cdStr"];
}
set
{
this["cdStr"] = value;
}
}
public enum Permissions
{
FullControl = 0,
Modify = 1,
ReadExecute = 2,
Read = 3,
Write = 4,
SpecialPermissions = 5
}
[ConfigurationProperty("permission", DefaultValue = Permissions.Read)]
public Permissions Permission
{
get
{
return (Permissions)this["permission"];
}
set
{
this["permission"] = value;
}
}
[ConfigurationProperty("maxUsers", DefaultValue="infinite")]
[TypeConverter(typeof(InfiniteIntConverter))]
public int MaxUsers
{
get
{
return (int)this["maxUsers"];
}
set
{
this["maxUsers"] = value;
}
}
}
}
' Define a custom section.
NotInheritable Public Class CustomSection
Inherits ConfigurationSection
Public Sub New()
End Sub
<ConfigurationProperty("fileName", _
DefaultValue:=" default.txt "), _
TypeConverter(GetType(WhiteSpaceTrimStringConverter))> _
Public Property FileName() As String
Get
Return CStr(Me("fileName"))
End Get
Set(ByVal value As String)
Me("fileName") = value
End Set
End Property
<ConfigurationProperty("maxIdleTime"), _
TypeConverter(GetType(CustomizedTimeSpanMinutesConverter))> _
Public Property MaxIdleTime() As TimeSpan
Get
Return CType(Me("maxIdleTime"), TimeSpan)
End Get
Set(ByVal value As TimeSpan)
Me("maxIdleTime") = value
End Set
End Property
<ConfigurationProperty("timeDelay", _
DefaultValue:="infinite"), _
TypeConverter(GetType(InfiniteTimeSpanConverter))> _
Public Property TimeDelay() As TimeSpan
Get
Return CType(Me("timeDelay"), TimeSpan)
End Get
Set(ByVal value As TimeSpan)
Me("timeDelay") = Value
End Set
End Property
<ConfigurationProperty("cdStr", _
DefaultValue:="str0, str1", _
IsRequired:=True), _
TypeConverter(GetType(CommaDelimitedStringCollectionConverter))> _
Public Property CdStr() As StringCollection
Get
Return CType(Me("cdStr"), StringCollection)
End Get
Set(ByVal value As StringCollection)
Me("cdStr") = value
End Set
End Property
Public Enum Permissions
FullControl = 0
Modify = 1
ReadExecute = 2
Read = 3
Write = 4
SpecialPermissions = 5
End Enum 'Permissions
<ConfigurationProperty("permission", _
DefaultValue:=Permissions.Read)> _
Public Property Permission() As Permissions
Get
Return CType(Me("permission"), Permissions)
End Get
Set(ByVal value As Permissions)
Me("permission") = Value
End Set
End Property
<ConfigurationProperty("maxUsers", _
DefaultValue:="infinite"), _
TypeConverter(GetType(InfiniteIntConverter))> _
Public Property MaxUsers() As Integer
Get
Return Fix(Me("maxUsers"))
End Get
Set(ByVal value As Integer)
Me("maxUsers") = Value
End Set
End Property
End Class
O seguinte exemplo de código mostra como criar e modificar um ficheiro de configuração usando a secção personalizada anterior.
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Globalization;
using System.ComponentModel;
namespace Samples.AspNet
{
// Define a custom section.
public sealed class CustomSection :
ConfigurationSection
{
public CustomSection()
{ }
[ConfigurationProperty("fileName", DefaultValue = "default.txt",
IsRequired = true, IsKey = false)]
[StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
MinLength = 1, MaxLength = 60)]
public string FileName
{
get
{
return (string)this["fileName"];
}
set
{
this["fileName"] = value;
}
}
[ConfigurationProperty("maxIdleTime")]
[TypeConverter(typeof(TsMinutesConverter))]
public TimeSpan MaxIdleTime
{
get
{
return (TimeSpan)this["maxIdleTime"];
}
set
{
this["maxIdleTime"] = value;
}
}
}
public sealed class TsMinutesConverter :
ConfigurationConverterBase
{
internal bool ValidateType(object value, Type expected)
{
bool result;
if ((value != null) &&
(value.GetType() != expected))
result = false;
else
result = true;
return result;
}
public override bool CanConvertTo(
ITypeDescriptorContext ctx, Type type)
{
return (type == typeof(string));
}
public override bool CanConvertFrom(
ITypeDescriptorContext ctx, Type type)
{
return (type == typeof(string));
}
public override object ConvertTo(
ITypeDescriptorContext ctx, CultureInfo ci,
object value, Type type)
{
ValidateType(value, typeof(TimeSpan));
long data = (long)(((TimeSpan)value).TotalMinutes);
return data.ToString(CultureInfo.InvariantCulture);
}
public override object ConvertFrom(
ITypeDescriptorContext ctx, CultureInfo ci, object data)
{
long min = long.Parse((string)data,
CultureInfo.InvariantCulture);
return TimeSpan.FromMinutes((double)min);
}
}
class UsingConfigutationConverterBase
{
// Create a custom section.
static void CreateSection()
{
try
{
CustomSection customSection;
// Get the current configuration file.
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
// Create the section entry
// in the <configSections> and the
// related target section in <configuration>.
if (config.Sections["CustomSection"] == null)
{
customSection = new CustomSection();
config.Sections.Add("CustomSection", customSection);
customSection.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
catch (ConfigurationErrorsException err)
{
Console.WriteLine(err.ToString());
}
}
// Change custom section and write it to disk.
static void SerializeCustomSection()
{
try
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
CustomSection customSection =
config.Sections.Get("CustomSection")
as CustomSection;
TimeSpan ts =
new TimeSpan(1, 30, 30);
customSection.MaxIdleTime = ts;
config.Save();
string maxIdleTime =
customSection.MaxIdleTime.ToString();
Console.WriteLine("New max idle time: {0}",
maxIdleTime);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
// Read custom section from disk.
static void DeserializeCustomSection()
{
try
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
CustomSection customSection =
config.Sections.Get("CustomSection")
as CustomSection;
TimeSpan maxIdleTime =
customSection.MaxIdleTime;
Console.WriteLine("Max idle time: {0}",
maxIdleTime.ToString());
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
static void Main(string[] args)
{
CreateSection();
SerializeCustomSection();
DeserializeCustomSection();
}
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.Globalization
Imports System.ComponentModel
' Define a custom section.
NotInheritable Public Class CustomSection
Inherits ConfigurationSection
Public Sub New()
End Sub
<ConfigurationProperty("fileName", _
DefaultValue:="default.txt", _
IsRequired:=True, IsKey:=False), _
StringValidator(InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
MinLength:=1, MaxLength:=60)> _
Public Property FileName() As String
Get
Return CStr(Me("fileName"))
End Get
Set(ByVal value As String)
Me("fileName") = value
End Set
End Property
<ConfigurationProperty("maxIdleTime"), _
TypeConverter(GetType(TsMinutesConverter))> _
Public Property MaxIdleTime() As TimeSpan
Get
Return CType(Me("maxIdleTime"), TimeSpan)
End Get
Set(ByVal value As TimeSpan)
Me("maxIdleTime") = Value
End Set
End Property
End Class
NotInheritable Public Class TsMinutesConverter
Inherits ConfigurationConverterBase
Friend Function ValidateType(value As Object, expected As Type) As Boolean
Dim result As Boolean
If Not (value Is Nothing) _
AndAlso (value.GetType().Equals(expected) <> True) Then
result = False
Else
result = True
End If
Return result
End Function 'ValidateType
Public Overrides Function CanConvertTo( _
ByVal ctx As ITypeDescriptorContext, _
ByVal type As Type) As Boolean
Return type.Equals(GetType(String))
End Function 'CanConvertTo
Public Overrides Function CanConvertFrom( _
ByVal ctx As ITypeDescriptorContext, _
ByVal type As Type) As Boolean
Return type.Equals(GetType(String))
End Function 'CanConvertFrom
Public Overrides Function ConvertTo( _
ByVal ctx As ITypeDescriptorContext, ByVal ci As CultureInfo, _
ByVal value As Object, ByVal type As Type) As Object
ValidateType(value, GetType(TimeSpan))
Dim data As Long = _
Fix(CType(value, TimeSpan).TotalMinutes)
Return data.ToString(CultureInfo.InvariantCulture)
End Function 'ConvertTo
Public Overrides Function ConvertFrom( _
ByVal ctx As ITypeDescriptorContext, ByVal ci As CultureInfo, _
ByVal data As Object) As Object
Dim min As Long = _
Long.Parse(CStr(data), _
CultureInfo.InvariantCulture)
Return TimeSpan.FromMinutes( _
System.Convert.ToDouble(min))
End Function 'ConvertFrom
End Class
Class UsingConfigutationConverterBase
' Create a custom section.
Shared Sub CreateSection()
Try
Dim customSection As CustomSection
' Get the current configuration file.
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
' Create the section entry
' in the <configSections> and the
' related target section in <configuration>.
If config.Sections("CustomSection") Is Nothing Then
customSection = New CustomSection()
config.Sections.Add("CustomSection", customSection)
customSection.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
End If
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
' Change custom section and write it to disk.
Shared Sub SerializeCustomSection()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim customSection _
As CustomSection = _
config.Sections.Get("CustomSection")
Dim ts As New TimeSpan(1, 30, 30)
customSection.MaxIdleTime = ts
config.Save()
Dim maxIdleTime As String = _
customSection.MaxIdleTime.ToString()
Console.WriteLine( _
"New max idle time: {0}", maxIdleTime)
Catch e As Exception
Console.WriteLine(e.ToString())
End Try
End Sub
' Read custom section from disk.
Shared Sub DeserializeCustomSection()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim customSection _
As CustomSection = _
config.Sections.Get("CustomSection")
Dim maxIdleTime As TimeSpan = _
customSection.MaxIdleTime
Console.WriteLine( _
"Max idle time: {0}", maxIdleTime.ToString())
Catch e As Exception
Console.WriteLine(e.ToString())
End Try
End Sub
Public Overloads Shared Sub Main(ByVal args() As String)
CreateSection()
SerializeCustomSection()
DeserializeCustomSection()
End Sub
End Class
Segue-se um excerto de configuração usado pelo exemplo anterior.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="CustomSection"
type="Samples.AspNet.CustomSection,
ConfigurationConverters,
Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null"
allowDefinition="Everywhere"
allowExeDefinition="MachineToApplication"
restartOnExternalChanges="true" />
</configSections>
<CustomSection fileName="default.txt" maxIdleTime="90" />
</configuration>
Observações
A ConfigurationConverterBase é a classe base para os tipos de configuração dos conversores. Estes são tipos que convertem strings, encontradas no ficheiro de configuração, para e a partir das propriedades fortemente tipadas relacionadas.
Construtores
| Name | Description |
|---|---|
| ConfigurationConverterBase() |
Inicializa uma nova instância da ConfigurationConverterBase classe. |
Métodos
| Name | Description |
|---|---|
| CanConvertFrom(ITypeDescriptorContext, Type) |
Determina se a conversão é permitida. |
| CanConvertFrom(Type) |
Devolve se este conversor pode converter um objeto do tipo dado para o tipo deste conversor. (Herdado de TypeConverter) |
| CanConvertTo(ITypeDescriptorContext, Type) |
Determina se a conversão é permitida. |
| CanConvertTo(Type) |
Devolve se este conversor pode converter o objeto para o tipo especificado. (Herdado de TypeConverter) |
| ConvertFrom(ITypeDescriptorContext, CultureInfo, Object) |
Converte o objeto dado para o tipo deste conversor, usando o contexto especificado e a informação de cultura. (Herdado de TypeConverter) |
| ConvertFrom(Object) |
Converte o valor dado para o tipo deste conversor. (Herdado de TypeConverter) |
| ConvertFromInvariantString(ITypeDescriptorContext, String) |
Converte a cadeia dada para o tipo deste conversor, usando a cultura invariante e o contexto especificado. (Herdado de TypeConverter) |
| ConvertFromInvariantString(String) |
Converte a cadeia dada para o tipo deste conversor, usando a cultura invariante. (Herdado de TypeConverter) |
| ConvertFromString(ITypeDescriptorContext, CultureInfo, String) |
Converte o texto dado num objeto, usando a informação específica de contexto e cultura. (Herdado de TypeConverter) |
| ConvertFromString(ITypeDescriptorContext, String) |
Converte o texto dado num objeto, usando o contexto especificado. (Herdado de TypeConverter) |
| ConvertFromString(String) |
Converte o texto especificado num objeto. (Herdado de TypeConverter) |
| ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) |
Converte o objeto de valor dado para o tipo especificado, usando o contexto e a informação de cultura especificados. (Herdado de TypeConverter) |
| ConvertTo(Object, Type) |
Converte o objeto de valor dado para o tipo especificado, usando os argumentos. (Herdado de TypeConverter) |
| ConvertToInvariantString(ITypeDescriptorContext, Object) |
Converte o valor especificado para uma representação de cordas invariante à cultura, usando o contexto especificado. (Herdado de TypeConverter) |
| ConvertToInvariantString(Object) |
Converte o valor especificado para uma representação de cordas invariante à cultura. (Herdado de TypeConverter) |
| ConvertToString(ITypeDescriptorContext, CultureInfo, Object) |
Converte o valor dado numa representação de cadeia, usando a informação específica de contexto e cultura. (Herdado de TypeConverter) |
| ConvertToString(ITypeDescriptorContext, Object) |
Converte o valor dado numa representação de cadeia, usando o contexto dado. (Herdado de TypeConverter) |
| ConvertToString(Object) |
Converte o valor especificado numa representação de cadeia. (Herdado de TypeConverter) |
| CreateInstance(IDictionary) |
Recria um Object dado conjunto de valores de propriedade para o objeto. (Herdado de TypeConverter) |
| CreateInstance(ITypeDescriptorContext, IDictionary) |
Cria uma instância do tipo a que isto TypeConverter está associado, usando o contexto especificado, dado um conjunto de valores de propriedade para o objeto. (Herdado de TypeConverter) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetConvertFromException(Object) |
Devolve uma exceção ao lançamento quando uma conversão não pode ser realizada. (Herdado de TypeConverter) |
| GetConvertToException(Object, Type) |
Devolve uma exceção ao lançamento quando uma conversão não pode ser realizada. (Herdado de TypeConverter) |
| GetCreateInstanceSupported() |
Devolve se alterar um valor neste objeto requer uma chamada ao CreateInstance(IDictionary) método para criar um novo valor. (Herdado de TypeConverter) |
| GetCreateInstanceSupported(ITypeDescriptorContext) |
Devolve se alterar um valor neste objeto requer uma chamada a CreateInstance(IDictionary) para criar um novo valor, usando o contexto especificado. (Herdado de TypeConverter) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
Devolve uma coleção de propriedades para o tipo de array especificado pelo parâmetro de valor, usando o contexto e atributos especificados. (Herdado de TypeConverter) |
| GetProperties(ITypeDescriptorContext, Object) |
Devolve uma coleção de propriedades para o tipo de array especificado pelo parâmetro de valor, usando o contexto especificado. (Herdado de TypeConverter) |
| GetProperties(Object) |
Devolve uma coleção de propriedades para o tipo de array especificado pelo parâmetro de valor. (Herdado de TypeConverter) |
| GetPropertiesSupported() |
Devolve se este objeto suporta propriedades. (Herdado de TypeConverter) |
| GetPropertiesSupported(ITypeDescriptorContext) |
Devolve se este objeto suporta propriedades, usando o contexto especificado. (Herdado de TypeConverter) |
| GetStandardValues() |
Devolve uma coleção de valores padrão do contexto padrão para o tipo de dado para o qual este conversor de tipo foi concebido. (Herdado de TypeConverter) |
| GetStandardValues(ITypeDescriptorContext) |
Devolve uma coleção de valores padrão para o tipo de dado para o qual este conversor de tipo foi concebido quando fornecido com um contexto de formato. (Herdado de TypeConverter) |
| GetStandardValuesExclusive() |
Devolve se a coleção de valores padrão retornada de GetStandardValues() é uma lista exclusiva. (Herdado de TypeConverter) |
| GetStandardValuesExclusive(ITypeDescriptorContext) |
Devolve se a coleção de valores padrão retornada de GetStandardValues() é uma lista exclusiva de valores possíveis, usando o contexto especificado. (Herdado de TypeConverter) |
| GetStandardValuesSupported() |
Devolve se este objeto suporta um conjunto padrão de valores que podem ser escolhidos de uma lista. (Herdado de TypeConverter) |
| GetStandardValuesSupported(ITypeDescriptorContext) |
Devolve se este objeto suporta um conjunto padrão de valores que podem ser escolhidos de uma lista, usando o contexto especificado. (Herdado de TypeConverter) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsValid(ITypeDescriptorContext, Object) |
Devolve se o objeto de valor dado é válido para este tipo e para o contexto especificado. (Herdado de TypeConverter) |
| IsValid(Object) |
Devolve se o objeto de valor dado é válido para este tipo. (Herdado de TypeConverter) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| SortProperties(PropertyDescriptorCollection, String[]) |
Ordena um conjunto de propriedades. (Herdado de TypeConverter) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |