Leer en inglés

Compartir a través de


ConfigurationConverterBase Clase

Definición

Es la clase base para los tipos de convertidor de configuración.

C#
public abstract class ConfigurationConverterBase : System.ComponentModel.TypeConverter
Herencia
ConfigurationConverterBase
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 .

C#
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);
    }
}

En el ejemplo de código siguiente se muestra cómo definir una sección personalizada que usa el convertidor personalizado TimeSpan anterior.

C#

    // 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;
            }
        }
    }
}

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.

C#
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();
        }
    }
}

A continuación se muestra un extracto de configuración como se usó en el ejemplo anterior.

XML
<?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, hacia y desde las propiedades relacionadas fuertemente tipadas.

Constructores

ConfigurationConverterBase()

Inicializa una nueva instancia de la clase ConfigurationConverterBase.

Métodos

CanConvertFrom(ITypeDescriptorContext, Type)

Determina si se permite la conversión.

CanConvertFrom(Type)

Devuelve si este convertidor puede convertir un objeto del tipo dado 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 dado al tipo de este convertidor, utilizando 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 dada en el tipo de este convertidor, utilizando el contexto especificado y la referencia cultural invariable.

(Heredado de TypeConverter)
ConvertFromInvariantString(String)

Convierte la cadena dada al tipo de este convertidor, utilizando la referencia cultural invariable.

(Heredado de TypeConverter)
ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Convierte el texto dado a un objeto, utilizando el contexto especificado y la información de referencia cultural.

(Heredado de TypeConverter)
ConvertFromString(ITypeDescriptorContext, String)

Convierte el texto dado a un objeto, utilizando el contexto especificado.

(Heredado de TypeConverter)
ConvertFromString(String)

Convierte el texto especificado a un objeto.

(Heredado de TypeConverter)
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

Convierte el objeto de valor dado al tipo especificado, utilizando el contexto y la información de referencia cultural especificados.

(Heredado de TypeConverter)
ConvertTo(Object, Type)

Convierte el objeto de valor dado al tipo especificado, utilizando los argumentos.

(Heredado de TypeConverter)
ConvertToInvariantString(ITypeDescriptorContext, Object)

Convierte el valor especificado a una representación de cadena invariable de la referencia cultural, utilizando el contexto especificado.

(Heredado de TypeConverter)
ConvertToInvariantString(Object)

Convierte el valor especificado a una representación de cadena invariable de la referencia cultural.

(Heredado de TypeConverter)
ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Convierte el valor dado a una representación de cadena, utilizando el contexto especificado y la información de referencia cultural.

(Heredado de TypeConverter)
ConvertToString(ITypeDescriptorContext, Object)

Convierte el valor dado a una representación de cadena, utilizando el contexto especificado.

(Heredado de TypeConverter)
ConvertToString(Object)

Convierte el valor especificado a una representación de cadena.

(Heredado de TypeConverter)
CreateInstance(IDictionary)

Vuelve a crear un Object dado un conjunto de valores de propiedad del objeto.

(Heredado de TypeConverter)
CreateInstance(ITypeDescriptorContext, IDictionary)

Crea una instancia del tipo al que está asociado este TypeConverter, mediante el contexto especificado, según un conjunto de valores de propiedad para el objeto.

(Heredado de TypeConverter)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetConvertFromException(Object)

Devuelve una excepción que se debe iniciar cuando no se puede realizar una conversión.

(Heredado de TypeConverter)
GetConvertToException(Object, Type)

Devuelve una excepción que se debe iniciar cuando no se puede realizar una conversión.

(Heredado de TypeConverter)
GetCreateInstanceSupported()

Devuelve un valor que indica si, al cambiar un valor en este objeto, es necesario llamar al método CreateInstance(IDictionary) para crear un nuevo valor.

(Heredado de TypeConverter)
GetCreateInstanceSupported(ITypeDescriptorContext)

Devuelve si el cambio de un valor en este objeto requiere una llamada a CreateInstance(IDictionary) para crear un nuevo valor, mediante el contexto especificado.

(Heredado de TypeConverter)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetProperties(ITypeDescriptorContext, Object)

Devuelve una colección de propiedades para el tipo de matriz especificado por valor del parámetro, utilizando el contexto especificado.

(Heredado de TypeConverter)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

Devuelve una colección de propiedades para el tipo de matriz especificado por el parámetro de valor, usando el contexto y los atributos especificados.

(Heredado de TypeConverter)
GetProperties(Object)

Devuelve una colección de propiedades para el tipo de matriz especificado por el valor del parámetro.

(Heredado de TypeConverter)
GetPropertiesSupported()

Devuelve si este objeto admite propiedades.

(Heredado de TypeConverter)
GetPropertiesSupported(ITypeDescriptorContext)

Devuelve si este objeto admite propiedades, mediante 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 por GetStandardValues() es una lista exclusiva.

(Heredado de TypeConverter)
GetStandardValuesExclusive(ITypeDescriptorContext)

Devuelve si la colección de valores estándar devueltos por GetStandardValues() es una lista exclusiva de posibles valores, 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, utilizando el contexto especificado.

(Heredado de TypeConverter)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsValid(ITypeDescriptorContext, Object)

Indica 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 valor de objeto dado es válido para este tipo.

(Heredado de TypeConverter)
MemberwiseClone()

Crea una copia superficial del Object actual.

(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)

Se aplica a

Producto Versiones
.NET 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Consulte también