Afficher en anglais

Partage via


ConfigurationConverterBase Classe

Définition

Classe de base des types de convertisseurs de configuration.

C#
public abstract class ConfigurationConverterBase : System.ComponentModel.TypeConverter
Héritage
ConfigurationConverterBase
Dérivé

Exemples

Les exemples de code suivants montrent comment dériver de la ConfigurationConverterBase classe pour créer un type de convertisseur personnalisé TimeSpan . En outre, les exemples montrent comment utiliser ce type dans une section personnalisée.

L’exemple de code suivant montre comment créer un type de convertisseur personnalisé TimeSpan à partir de la ConfigurationConverterBase classe .

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

L’exemple de code suivant montre comment définir une section personnalisée qui utilise le convertisseur personnalisé TimeSpan précédent.

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

L’exemple de code suivant montre comment créer et modifier un fichier de configuration à l’aide de la section personnalisée précédente.

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

Voici un extrait de configuration tel qu’utilisé dans l’exemple précédent.

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>  

Remarques

est ConfigurationConverterBase la classe de base pour les types de configuration du convertisseur. Il s’agit de types qui convertissent des chaînes, trouvées dans le fichier de configuration, vers et à partir des propriétés fortement typées associées.

Constructeurs

ConfigurationConverterBase()

Initialise une nouvelle instance de la classe ConfigurationConverterBase.

Méthodes

CanConvertFrom(ITypeDescriptorContext, Type)

Détermine si la conversion est autorisée.

CanConvertFrom(Type)

Retourne une valeur indiquant si ce convertisseur peut convertir un objet du type donné en objet du type de ce convertisseur.

(Hérité de TypeConverter)
CanConvertTo(ITypeDescriptorContext, Type)

Détermine si la conversion est autorisée.

CanConvertTo(Type)

Retourne une valeur indiquant si ce convertisseur peut convertir l'objet en objet du type spécifié.

(Hérité de TypeConverter)
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Convertit l'objet donné au type de ce convertisseur, en utilisant le contexte et les informations de culture spécifiés.

(Hérité de TypeConverter)
ConvertFrom(Object)

Convertit la valeur donnée en valeur du type de ce convertisseur.

(Hérité de TypeConverter)
ConvertFromInvariantString(ITypeDescriptorContext, String)

Convertit la chaîne donnée au type de ce convertisseur, à l'aide des informations de culture indifférente et du contexte spécifiés.

(Hérité de TypeConverter)
ConvertFromInvariantString(String)

Convertit la chaîne donnée en représentation sous forme de chaîne du type de ce convertisseur, à l'aide de la culture dite indifférente.

(Hérité de TypeConverter)
ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Convertit le texte donné en objet, à l'aide du contexte et des informations de culture spécifiés.

(Hérité de TypeConverter)
ConvertFromString(ITypeDescriptorContext, String)

Convertit le texte donné en objet, à l'aide du contexte spécifié.

(Hérité de TypeConverter)
ConvertFromString(String)

Convertit le texte spécifié en objet.

(Hérité de TypeConverter)
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

Convertit l'objet valeur donné au type spécifié, en utilisant le contexte et les informations de culture spécifiés.

(Hérité de TypeConverter)
ConvertTo(Object, Type)

Convertit l'objet de valeur donné en objet du type spécifié, à l'aide des arguments.

(Hérité de TypeConverter)
ConvertToInvariantString(ITypeDescriptorContext, Object)

Convertit la valeur spécifiée en représentation sous forme de chaîne de culture dite indifférente, à l'aide du contexte déterminé.

(Hérité de TypeConverter)
ConvertToInvariantString(Object)

Convertit la valeur spécifiée en représentation sous forme de chaîne de culture dite indifférente.

(Hérité de TypeConverter)
ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Convertit la valeur donnée en représentation sous forme de chaîne, à l'aide du contexte et des informations de culture spécifiés.

(Hérité de TypeConverter)
ConvertToString(ITypeDescriptorContext, Object)

Convertit la valeur donnée en représentation sous forme de chaîne, à l'aide du contexte déterminé.

(Hérité de TypeConverter)
ConvertToString(Object)

Convertit la valeur spécifiée en représentation sous forme de chaîne.

(Hérité de TypeConverter)
CreateInstance(IDictionary)

Recrée un Object en fonction d'un jeu de valeurs de propriétés de l'objet.

(Hérité de TypeConverter)
CreateInstance(ITypeDescriptorContext, IDictionary)

Crée une instance du type auquel ce TypeConverter est associé, en utilisant le contexte spécifié, en fonction d’un ensemble de valeurs de propriétés de l’objet.

(Hérité de TypeConverter)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetConvertFromException(Object)

Retourne une exception à lever quand une conversion ne peut pas être effectuée.

(Hérité de TypeConverter)
GetConvertToException(Object, Type)

Retourne une exception à lever quand une conversion ne peut pas être effectuée.

(Hérité de TypeConverter)
GetCreateInstanceSupported()

Retourne une valeur indiquant si la modification d'une valeur de cet objet nécessite un appel à la méthode CreateInstance(IDictionary) pour créer une nouvelle valeur.

(Hérité de TypeConverter)
GetCreateInstanceSupported(ITypeDescriptorContext)

Retourne une valeur indiquant si la modification d’une valeur de cet objet nécessite un appel à CreateInstance(IDictionary) pour créer une valeur, en utilisant le contexte spécifié.

(Hérité de TypeConverter)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetProperties(ITypeDescriptorContext, Object)

Retourne une collection de propriétés pour le type de tableau spécifié par le paramètre de valeur, à l'aide du contexte déterminé.

(Hérité de TypeConverter)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

Retourne une collection de propriétés pour le type de tableau spécifié par le paramètre de valeur, à l’aide du contexte et des attributs spécifiés.

(Hérité de TypeConverter)
GetProperties(Object)

Retourne une collection de propriétés pour le type de tableau spécifié par le paramètre de valeur.

(Hérité de TypeConverter)
GetPropertiesSupported()

Retourne une valeur indiquant si l'objet prend en charge les propriétés.

(Hérité de TypeConverter)
GetPropertiesSupported(ITypeDescriptorContext)

Retourne une valeur qui indique si cet objet prend en charge les propriétés en utilisant le contexte spécifié.

(Hérité de TypeConverter)
GetStandardValues()

Retourne une collection de valeurs standard à partir du contexte par défaut du type de données pour lequel ce convertisseur de type est conçu.

(Hérité de TypeConverter)
GetStandardValues(ITypeDescriptorContext)

Retourne une collection de valeurs standard pour le type de données compatible avec ce convertisseur de type quand un contexte de format est fourni.

(Hérité de TypeConverter)
GetStandardValuesExclusive()

Retourne une valeur indiquant si la collection de valeurs standard retournée par GetStandardValues() est une liste exclusive.

(Hérité de TypeConverter)
GetStandardValuesExclusive(ITypeDescriptorContext)

Retourne une valeur indiquant si la collection de valeurs standard retournée par GetStandardValues() est une liste exclusive des valeurs possibles, à l’aide du contexte spécifié.

(Hérité de TypeConverter)
GetStandardValuesSupported()

Retourne une valeur indiquant si cet objet prend en charge un jeu standard de valeurs qui peuvent être sélectionnées dans une liste.

(Hérité de TypeConverter)
GetStandardValuesSupported(ITypeDescriptorContext)

Retourne une valeur indiquant si cet objet prend en charge un jeu de valeurs standard pouvant être sélectionnées dans une liste, à l'aide du contexte spécifié.

(Hérité de TypeConverter)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsValid(ITypeDescriptorContext, Object)

Indique par retour si l’objet de valeur donné est valide pour ce type et pour le contexte spécifié.

(Hérité de TypeConverter)
IsValid(Object)

Retourne une valeur indiquant si l'objet de valeur donné est valide pour ce type.

(Hérité de TypeConverter)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
SortProperties(PropertyDescriptorCollection, String[])

Trie une collection de propriétés.

(Hérité de TypeConverter)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Produit Versions
.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

Voir aussi