Auf Englisch lesen

Teilen über


ConfigurationConverterBase Klasse

Definition

Die Basisklasse für die Konfigurationskonvertertypen.

C#
public abstract class ConfigurationConverterBase : System.ComponentModel.TypeConverter
Vererbung
ConfigurationConverterBase
Abgeleitet

Beispiele

Die folgenden Codebeispiele zeigen, wie Sie von der ConfigurationConverterBase -Klasse ableiten, um einen benutzerdefinierten TimeSpan Konvertertyp zu erstellen. Außerdem zeigen die Beispiele, wie dieser Typ in einem benutzerdefinierten Abschnitt verwendet wird.

Das folgende Codebeispiel zeigt, wie Sie einen benutzerdefinierten TimeSpan Konvertertyp aus der ConfigurationConverterBase -Klasse erstellen.

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

Das folgende Codebeispiel zeigt, wie Sie einen benutzerdefinierten Abschnitt definieren, der den vorherigen benutzerdefinierten TimeSpan Konverter verwendet.

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

Im folgenden Codebeispiel wird gezeigt, wie Sie eine Konfigurationsdatei mithilfe des vorherigen benutzerdefinierten Abschnitts erstellen und ändern.

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

Im Folgenden finden Sie einen Konfigurationsauszug, der im vorherigen Beispiel verwendet wurde.

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>  

Hinweise

Ist ConfigurationConverterBase die Basisklasse für die Konverterkonfigurationstypen. Dies sind Typen, die Zeichenfolgen aus der Konfigurationsdatei in und aus den zugehörigen stark typisierten Eigenschaften konvertieren.

Konstruktoren

ConfigurationConverterBase()

Initialisiert eine neue Instanz der ConfigurationConverterBase-Klasse.

Methoden

CanConvertFrom(ITypeDescriptorContext, Type)

Bestimmt, ob die Konvertierung zulässig ist.

CanConvertFrom(Type)

Gibt zurück, ob dieser Konverter ein Objekt des angegebenen Typs in den Typ dieses Konverters konvertieren kann.

(Geerbt von TypeConverter)
CanConvertTo(ITypeDescriptorContext, Type)

Bestimmt, ob die Konvertierung zulässig ist.

CanConvertTo(Type)

Gibt zurück, ob dieser Konverter das Objekt in den angegebenen Typ konvertieren kann.

(Geerbt von TypeConverter)
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Konvertiert das angegebene Objekt in den Typ dieses Konverters mit dem angegebenen Kontext und Kulturinformationen.

(Geerbt von TypeConverter)
ConvertFrom(Object)

Konvertiert den angegebenen Wert in den Typ dieses Konverters.

(Geerbt von TypeConverter)
ConvertFromInvariantString(ITypeDescriptorContext, String)

Konvertiert die angegebene Zeichenfolge unter Verwendung der invarianten Kultur und des angegebenen Kontexts in den Typ dieses Konverters.

(Geerbt von TypeConverter)
ConvertFromInvariantString(String)

Konvertiert die angegebene Zeichenfolge unter Verwendung der invarianten Kultur in einen Typ dieses Konverters.

(Geerbt von TypeConverter)
ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Konvertiert den angegebenen Text unter Verwendung des angegebenen Kontexts und der angegebenen Kulturinformationen in ein Objekt.

(Geerbt von TypeConverter)
ConvertFromString(ITypeDescriptorContext, String)

Konvertiert den angegebenen Text unter Verwendung des angegebenen Kontexts in ein Objekt.

(Geerbt von TypeConverter)
ConvertFromString(String)

Konvertiert den angegebenen Text in ein Objekt.

(Geerbt von TypeConverter)
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

Konvertiert das angegebene Wertobjekt in den angegebenen Typ mit dem angegebenen Kontext und Kulturinformationen.

(Geerbt von TypeConverter)
ConvertTo(Object, Type)

Konvertiert das angegebene Wertobjekt unter Verwendung der Argumente in den angegebenen Typ.

(Geerbt von TypeConverter)
ConvertToInvariantString(ITypeDescriptorContext, Object)

Konvertiert den angegebenen Wert unter Verwendung des angegebenen Kontexts in eine Zeichenfolgendarstellung mit invarianter Kultur.

(Geerbt von TypeConverter)
ConvertToInvariantString(Object)

Konvertiert den angegebenen Wert in eine Zeichenfolgendarstellung mit invarianter Kultur.

(Geerbt von TypeConverter)
ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Konvertiert den angegebenen Wert unter Verwendung des angegebenen Kontexts und der angegebenen Kulturinformationen in eine Zeichenfolgendarstellung.

(Geerbt von TypeConverter)
ConvertToString(ITypeDescriptorContext, Object)

Konvertiert den angegebenen Wert unter Verwendung des angegebenen Kontexts in eine Zeichenfolgendarstellung.

(Geerbt von TypeConverter)
ConvertToString(Object)

Konvertiert den angegebenen Wert in eine Zeichenfolgendarstellung.

(Geerbt von TypeConverter)
CreateInstance(IDictionary)

Erstellt eine Object-Klasse mit einer angegebenen Menge von Eigenschaftswerten für das Objekt neu.

(Geerbt von TypeConverter)
CreateInstance(ITypeDescriptorContext, IDictionary)

Erstellt über den angegebenen Kontext, der aus einer angegebenen Menge von Eigenschaftswerten für das Objekt besteht, eine Instanz des Typs, der dieser TypeConverter-Klasse zugeordnet ist.

(Geerbt von TypeConverter)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetConvertFromException(Object)

Gibt eine Ausnahme zurück, wenn eine Konvertierung nicht erfolgen kann.

(Geerbt von TypeConverter)
GetConvertToException(Object, Type)

Gibt eine Ausnahme zurück, wenn eine Konvertierung nicht erfolgen kann.

(Geerbt von TypeConverter)
GetCreateInstanceSupported()

Gibt zurück, ob zum Ändern eines Werts für dieses Objekt ein Aufruf der CreateInstance(IDictionary)-Methode erforderlich ist.

(Geerbt von TypeConverter)
GetCreateInstanceSupported(ITypeDescriptorContext)

Gibt zurück, ob bei Ändern eines Werts für dieses Objekt ein Aufruf von CreateInstance(IDictionary) zum Erstellen eines neuen Werts mit dem angegebenen Kontext erforderlich ist.

(Geerbt von TypeConverter)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetProperties(ITypeDescriptorContext, Object)

Gibt unter Verwendung des angegebenen Kontexts eine Auflistung der Eigenschaften für den Typ von Array zurück, der durch den Wertparameter angegeben ist.

(Geerbt von TypeConverter)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

Gibt unter Verwendung des angegebenen Kontexts und der angegebenen Attribute eine Auflistung der Eigenschaften für den Arraytyp zurück, der durch den Wertparameter angegeben ist.

(Geerbt von TypeConverter)
GetProperties(Object)

Gibt eine Auflistung von Eigenschaften für den Typ Array zurück, der durch den Wertparameter angegeben ist.

(Geerbt von TypeConverter)
GetPropertiesSupported()

Gibt zurück, ob dieses Objekt Eigenschaften unterstützt.

(Geerbt von TypeConverter)
GetPropertiesSupported(ITypeDescriptorContext)

Gibt zurück, ob dieses Objekt Eigenschaften unter Verwendung des angegebenen Kontexts unterstützt.

(Geerbt von TypeConverter)
GetStandardValues()

Gibt eine Auflistung von Standardwerten aus dem Standardkontext für den Datentyp zurück, für den dieser Typkonverter vorgesehen ist.

(Geerbt von TypeConverter)
GetStandardValues(ITypeDescriptorContext)

Gibt eine Auflistung von Standardwerten für den Datentyp zurück, auf den dieser Typkonverter ausgelegt ist, wenn ein Formatkontext bereitgestellt wird.

(Geerbt von TypeConverter)
GetStandardValuesExclusive()

Gibt zurück, ob die von GetStandardValues() zurückgegebene Auflistung von Standardwerten eine exklusive Liste darstellt.

(Geerbt von TypeConverter)
GetStandardValuesExclusive(ITypeDescriptorContext)

Gibt zurück, ob die Auflistung von Standardwerten, die von der GetStandardValues()-Methode unter Verwendung des angegebenen Kontexts zurückgegeben werden, eine exklusive Liste von möglichen Werten darstellt.

(Geerbt von TypeConverter)
GetStandardValuesSupported()

Gibt zurück, ob dieses Objekt einen Standardsatz von Werten unterstützt, die aus einer Liste ausgewählt werden können.

(Geerbt von TypeConverter)
GetStandardValuesSupported(ITypeDescriptorContext)

Gibt zurück, ob dieses Objekt einen Standardsatz von Werten unterstützt, die unter Verwendung des angegebenen Kontexts aus einer Liste ausgewählt werden können.

(Geerbt von TypeConverter)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsValid(ITypeDescriptorContext, Object)

Gibt zurück, ob das angegebene Wertobjekt für diesen Typ und den angegebenen Kontext gültig ist.

(Geerbt von TypeConverter)
IsValid(Object)

Ruft ab, ob das angegebene Werteobjekt für diesen Typ gültig ist.

(Geerbt von TypeConverter)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
SortProperties(PropertyDescriptorCollection, String[])

Sortiert eine Auflistung von Eigenschaften.

(Geerbt von TypeConverter)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Produkt Versionen
.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

Weitere Informationen