ConfigurationConverterBase Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Clase base para los tipos de convertidor de configuración.
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
- Herencia
- Derivado
Ejemplos
En los ejemplos de código siguientes se muestra cómo derivar de la ConfigurationConverterBase clase para crear un tipo de convertidor personalizado TimeSpan . Además, los ejemplos muestran cómo usar este tipo en una sección personalizada.
En el ejemplo de código siguiente se muestra cómo crear un tipo de convertidor personalizado TimeSpan a partir de la ConfigurationConverterBase clase .
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
En el ejemplo de código siguiente se muestra cómo definir una sección personalizada que usa el convertidor 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
En el ejemplo de código siguiente se muestra cómo crear y modificar un archivo de configuración mediante la sección 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
A continuación se muestra un extracto de configuración, tal como se usó en el ejemplo 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>
Comentarios
ConfigurationConverterBase es la clase base para los tipos de configuración del convertidor. Estos son tipos que convierten cadenas, que se encuentran en el archivo de configuración, a y desde las propiedades relacionadas fuertemente tipadas.
Constructores
| Nombre | Description |
|---|---|
| ConfigurationConverterBase() |
Inicializa una nueva instancia de la clase ConfigurationConverterBase. |
Métodos
| Nombre | Description |
|---|---|
| CanConvertFrom(ITypeDescriptorContext, Type) |
Determina si se permite la conversión. |
| CanConvertFrom(Type) |
Devuelve si este convertidor puede convertir un objeto del tipo especificado al tipo de este convertidor. (Heredado de TypeConverter) |
| CanConvertTo(ITypeDescriptorContext, Type) |
Determina si se permite la conversión. |
| CanConvertTo(Type) |
Devuelve si este convertidor puede convertir el objeto al tipo especificado. (Heredado de TypeConverter) |
| ConvertFrom(ITypeDescriptorContext, CultureInfo, Object) |
Convierte el objeto especificado en el tipo de este convertidor mediante el contexto y la información de referencia cultural especificados. (Heredado de TypeConverter) |
| ConvertFrom(Object) |
Convierte el valor especificado en el tipo de este convertidor. (Heredado de TypeConverter) |
| ConvertFromInvariantString(ITypeDescriptorContext, String) |
Convierte la cadena especificada en el tipo de este convertidor, utilizando la referencia cultural invariable y el contexto especificado. (Heredado de TypeConverter) |
| ConvertFromInvariantString(String) |
Convierte la cadena especificada en el tipo de este convertidor mediante la referencia cultural invariable. (Heredado de TypeConverter) |
| ConvertFromString(ITypeDescriptorContext, CultureInfo, String) |
Convierte el texto especificado en un objeto utilizando el contexto y la información de referencia cultural especificados. (Heredado de TypeConverter) |
| ConvertFromString(ITypeDescriptorContext, String) |
Convierte el texto especificado en un objeto utilizando el contexto especificado. (Heredado de TypeConverter) |
| ConvertFromString(String) |
Convierte el texto especificado en un objeto . (Heredado de TypeConverter) |
| ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) |
Convierte el objeto de valor especificado en el tipo especificado, utilizando el contexto y la información de referencia cultural especificados. (Heredado de TypeConverter) |
| ConvertTo(Object, Type) |
Convierte el objeto de valor especificado en el tipo especificado mediante los argumentos . (Heredado de TypeConverter) |
| ConvertToInvariantString(ITypeDescriptorContext, Object) |
Convierte el valor especificado en una representación de cadena invariable de referencia cultural mediante el contexto especificado. (Heredado de TypeConverter) |
| ConvertToInvariantString(Object) |
Convierte el valor especificado en una representación de cadena invariable de referencia cultural. (Heredado de TypeConverter) |
| ConvertToString(ITypeDescriptorContext, CultureInfo, Object) |
Convierte el valor especificado en una representación de cadena mediante el contexto y la información de referencia cultural especificados. (Heredado de TypeConverter) |
| ConvertToString(ITypeDescriptorContext, Object) |
Convierte el valor especificado en una representación de cadena mediante el contexto especificado. (Heredado de TypeConverter) |
| ConvertToString(Object) |
Convierte el valor especificado en una representación de cadena. (Heredado de TypeConverter) |
| CreateInstance(IDictionary) |
Vuelva a crear un Object conjunto determinado de valores de propiedad para el objeto . (Heredado de TypeConverter) |
| CreateInstance(ITypeDescriptorContext, IDictionary) |
Crea una instancia del tipo al que TypeConverter está asociado, utilizando el contexto especificado, dado un conjunto de valores de propiedad para el objeto. (Heredado de TypeConverter) |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetConvertFromException(Object) |
Devuelve una excepción que se produce cuando no se puede realizar una conversión. (Heredado de TypeConverter) |
| GetConvertToException(Object, Type) |
Devuelve una excepción que se produce cuando no se puede realizar una conversión. (Heredado de TypeConverter) |
| GetCreateInstanceSupported() |
Devuelve si cambiar un valor en este objeto requiere una llamada al CreateInstance(IDictionary) método para crear un nuevo valor. (Heredado de TypeConverter) |
| GetCreateInstanceSupported(ITypeDescriptorContext) |
Devuelve si cambiar un valor en este objeto requiere una llamada a para CreateInstance(IDictionary) crear un nuevo valor mediante el contexto especificado. (Heredado de TypeConverter) |
| GetHashCode() |
Actúa como la función hash predeterminada. (Heredado de Object) |
| GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
Devuelve una colección de propiedades para el tipo de matriz especificado por el parámetro value, utilizando el contexto y los atributos especificados. (Heredado de TypeConverter) |
| GetProperties(ITypeDescriptorContext, Object) |
Devuelve una colección de propiedades para el tipo de matriz especificado por el parámetro value, utilizando el contexto especificado. (Heredado de TypeConverter) |
| GetProperties(Object) |
Devuelve una colección de propiedades para el tipo de matriz especificado por el parámetro value. (Heredado de TypeConverter) |
| GetPropertiesSupported() |
Devuelve si este objeto admite propiedades. (Heredado de TypeConverter) |
| GetPropertiesSupported(ITypeDescriptorContext) |
Devuelve si este objeto admite propiedades, utilizando el contexto especificado. (Heredado de TypeConverter) |
| GetStandardValues() |
Devuelve una colección de valores estándar del contexto predeterminado para el tipo de datos para el que está diseñado este convertidor de tipos. (Heredado de TypeConverter) |
| GetStandardValues(ITypeDescriptorContext) |
Devuelve una colección de valores estándar para el tipo de datos para el que está diseñado este convertidor de tipos cuando se proporciona con un contexto de formato. (Heredado de TypeConverter) |
| GetStandardValuesExclusive() |
Devuelve si la colección de valores estándar devueltos de GetStandardValues() es una lista exclusiva. (Heredado de TypeConverter) |
| GetStandardValuesExclusive(ITypeDescriptorContext) |
Devuelve si la colección de valores estándar devueltos de GetStandardValues() es una lista exclusiva de valores posibles, utilizando el contexto especificado. (Heredado de TypeConverter) |
| GetStandardValuesSupported() |
Devuelve si este objeto admite un conjunto estándar de valores que se pueden seleccionar de una lista. (Heredado de TypeConverter) |
| GetStandardValuesSupported(ITypeDescriptorContext) |
Devuelve si este objeto admite un conjunto estándar de valores que se pueden seleccionar de una lista mediante el contexto especificado. (Heredado de TypeConverter) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| IsValid(ITypeDescriptorContext, Object) |
Devuelve si el objeto de valor especificado es válido para este tipo y para el contexto especificado. (Heredado de TypeConverter) |
| IsValid(Object) |
Devuelve si el objeto de valor especificado es válido para este tipo. (Heredado de TypeConverter) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| SortProperties(PropertyDescriptorCollection, String[]) |
Ordena una colección de propiedades. (Heredado de TypeConverter) |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |