Leggi in inglese

Condividi tramite


ConfigurationSectionCollection Classe

Definizione

Rappresenta una raccolta di sezioni correlate in un file di configurazione.

C#
public sealed class ConfigurationSectionCollection : System.Collections.Specialized.NameObjectCollectionBase
C#
[System.Serializable]
public sealed class ConfigurationSectionCollection : System.Collections.Specialized.NameObjectCollectionBase
Ereditarietà
ConfigurationSectionCollection
Attributi

Esempio

Nell'esempio di codice seguente viene illustrato l'utilizzo della classe ConfigurationSectionCollection.

C#
using System;
using System.Configuration;
using System.Collections;

namespace Samples.AspNet.Configuration
{

    // Define a custom section programmatically.
    public sealed class CustomSection :
        ConfigurationSection
    {
        // The collection (property bag) that contains 
        // the section properties.
        private static ConfigurationPropertyCollection _Properties;

        // The FileName property.
        private static readonly ConfigurationProperty _FileName =
            new ConfigurationProperty("fileName",
            typeof(string), "default.txt",
            ConfigurationPropertyOptions.IsRequired);

        // The MasUsers property.
        private static readonly ConfigurationProperty _MaxUsers =
            new ConfigurationProperty("maxUsers",
            typeof(long), (long)1000,
            ConfigurationPropertyOptions.None);

        // The MaxIdleTime property.
        private static readonly ConfigurationProperty _MaxIdleTime =
            new ConfigurationProperty("maxIdleTime",
            typeof(TimeSpan), TimeSpan.FromMinutes(5),
            ConfigurationPropertyOptions.IsRequired);

        // CustomSection constructor.
        public CustomSection()
        {
            // Property initialization
            _Properties =
                new ConfigurationPropertyCollection();

            _Properties.Add(_FileName);
            _Properties.Add(_MaxUsers);
            _Properties.Add(_MaxIdleTime);
        }

        // This is a key customization. 
        // It returns the initialized property bag.
        protected override ConfigurationPropertyCollection Properties
        {
            get
            {
                return _Properties;
            }
        }

        [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
            MinLength = 1, MaxLength = 60)]
        public string FileName
        {
            get
            {
                return (string)this["fileName"];
            }
            set
            {

                this["fileName"] = value;
            }
        }

        [LongValidator(MinValue = 1, MaxValue = 1000000,
            ExcludeRange = false)]
        public long MaxUsers
        {
            get
            {
                return (long)this["maxUsers"];
            }
            set
            {
                this["maxUsers"] = value;
            }
        }

        [TimeSpanValidator(MinValueString = "0:0:30",
            MaxValueString = "5:00:0",
            ExcludeRange = false)]
        public TimeSpan MaxIdleTime
        {
            get
            {
                return (TimeSpan)this["maxIdleTime"];
            }
            set
            {
                this["maxIdleTime"] = value;
            }
        }
    }

    class UsingCustomSectionCollection
    {

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

        static void GetAllKeys()
        {

            try
            {
                System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

                ConfigurationSectionCollection sections =
                    config.Sections;

                foreach (string key in sections.Keys)
                {
                    Console.WriteLine(
                     "Key value: {0}", key);
                }
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }


        static void Clear()
        {

            try
            {
                System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

                config.Sections.Clear();

                config.Save(ConfigurationSaveMode.Full);
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }


        static void GetSection()
        {

            try
            {
                CustomSection customSection =
                    ConfigurationManager.GetSection(
                    "CustomSection") as CustomSection;

                if (customSection == null)
                    Console.WriteLine(
                        "Failed to load CustomSection.");
                else
                {
                    // Display section information
                    Console.WriteLine("Defaults:");
                    Console.WriteLine("File Name:       {0}",
                        customSection.FileName);
                    Console.WriteLine("Max Users:       {0}",
                        customSection.MaxUsers);
                    Console.WriteLine("Max Idle Time:   {0}",
                        customSection.MaxIdleTime);
                }
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }

        static void GetEnumerator()
        {

            try
            {
                System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

                ConfigurationSectionCollection sections =
                    config.Sections;

                IEnumerator secEnum =
                    sections.GetEnumerator();

                int i = 0;
                while (secEnum.MoveNext())
                {
                    string setionName = sections.GetKey(i);
                    Console.WriteLine(
                        "Section name: {0}", setionName);
                    i += 1;
                }
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }

        static void GetKeys()
        {

            try
            {
                System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

                ConfigurationSectionCollection sections =
                    config.Sections;

                foreach (string key in sections.Keys)
                {

                    Console.WriteLine(
                     "Key value: {0}", key);
                }
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }


        static void GetItems()
        {

            try
            {
                System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

                ConfigurationSectionCollection sections =
                    config.Sections;

                ConfigurationSection section1 =
                    sections["runtime"];

                ConfigurationSection section2 =
                    sections[0];

                Console.WriteLine(
                     "Section1: {0}", section1.SectionInformation.Name);

                Console.WriteLine(
                    "Section2: {0}", section2.SectionInformation.Name);
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }


        static void Remove()
        {

            try
            {
                System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

                CustomSection customSection =
                    config.GetSection(
                    "CustomSection") as CustomSection;

                if (customSection != null)
                {
                    config.Sections.Remove("CustomSection");
                    customSection.SectionInformation.ForceSave = true;
                    config.Save(ConfigurationSaveMode.Full);
                }
                else
                    Console.WriteLine(
                        "CustomSection does not exists.");
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }

        static void AddSection()
        {

            try
            {
                System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

                CustomSection customSection =
                    new CustomSection();

                string index =
                    config.Sections.Count.ToString();

                customSection.FileName =
                    "newFile" + index + ".txt";

                string sectionName = "CustomSection" + index;

                TimeSpan ts = new TimeSpan(0, 15, 0);
                customSection.MaxIdleTime = ts;
                customSection.MaxUsers = 100;

                config.Sections.Add(sectionName, customSection);
                customSection.SectionInformation.ForceSave = true;
                config.Save(ConfigurationSaveMode.Full);
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }

        // Exercise the collection.
        // Uncomment the function you want to exercise.
        // Start with CreateSection().
        static void Main(string[] args)
        {
            CreateSection();
            // AddSection();
            // GetSection();
            // GetEnumerator();
            // GetAllKeys();
            // GetKeys();
            // GetItems();

            // Remove();
            // Clear();
        }
    }
}

L'esempio seguente è un estratto del file di configurazione usato dall'esempio precedente.

XML
<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
  <configSections>  

    <section name="CustomSection"   
      type="Samples.AspNet.Configuration.CustomSection, ConfigurationSectionCollection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" />  

  </configSections>  

  <CustomSection fileName="default.txt" maxUsers="1000"   
    maxIdleTime="00:05:00" />  

</configuration>  

Commenti

Usare la ConfigurationSectionCollection classe per scorrere una raccolta di ConfigurationSection oggetti . È possibile accedere a questa raccolta di oggetti usando la Sections proprietà o la Sections proprietà .

La ConfigurationSectionCollection classe viene usata anche nella creazione di tipi personalizzati che estendono la ConfigurationSection classe .

Proprietà

Count

Ottiene il numero delle sezioni contenute in questo oggetto ConfigurationSectionCollection.

Count

Ottiene il numero di coppie chiave/valore contenute nell'istanza della classe NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
IsReadOnly

Ottiene o imposta un valore che indica se l'istanza di NameObjectCollectionBase è di sola lettura.

(Ereditato da NameObjectCollectionBase)
Item[Int32]

Ottiene l'oggetto ConfigurationSection specificato.

Item[String]

Ottiene l'oggetto ConfigurationSection specificato.

Keys

Ottiene le chiavi per tutti gli oggetti ConfigurationSection contenuti in questo oggetto ConfigurationSectionCollection.

Keys

Ottiene un'istanza NameObjectCollectionBase.KeysCollection che contiene tutte le chiavi nell'istanza NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)

Metodi

Add(String, ConfigurationSection)

Aggiunge un oggetto ConfigurationSection all'oggetto ConfigurationSectionCollection.

BaseAdd(String, Object)

Aggiunge una voce con la chiave e il valore specificati nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseClear()

Rimuove tutte le voci dall'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGet(Int32)

Ottiene il valore della voce in corrispondenza dell'indice specificato dell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGet(String)

Ottiene il valore della prima voce con la chiave specificata dall'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGetAllKeys()

Restituisce una matrice String che contiene tutte le chiavi incluse nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGetAllValues()

Restituisce una matrice Object che contiene tutti i valori inclusi nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGetAllValues(Type)

Restituisce una matrice del tipo specificato che contiene tutti i valori inclusi nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGetKey(Int32)

Ottiene la chiave della voce in corrispondenza dell'indice specificato dell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseHasKeys()

Ottiene un valore che indica se l'istanza di NameObjectCollectionBase contiene voci le cui chiavi non sono null.

(Ereditato da NameObjectCollectionBase)
BaseRemove(String)

Rimuove le voci con la chiave specificata dall'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseRemoveAt(Int32)

Rimuove la voce in corrispondenza dell'indice specificato dell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseSet(Int32, Object)

Imposta il valore della voce in corrispondenza dell'indice specificato dell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseSet(String, Object)

Imposta il valore della prima voce con la chiave specificata contenuta nell'istanza di NameObjectCollectionBase, se presente; in caso contrario aggiunge una voce con la chiave e il valore specificati nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
Clear()

Cancella questo oggetto ConfigurationSectionCollection.

CopyTo(ConfigurationSection[], Int32)

Copia questo oggetto ConfigurationSectionCollection in una matrice.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Get(Int32)

Ottiene l'oggetto ConfigurationSection specificato contenuto in questo oggetto ConfigurationSectionCollection.

Get(String)

Ottiene l'oggetto ConfigurationSection specificato contenuto in questo oggetto ConfigurationSectionCollection.

GetEnumerator()

Ottiene un enumeratore che scorre questo oggetto ConfigurationSectionCollection.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetKey(Int32)

Ottiene la chiave dell'oggetto ConfigurationSection specificato contenuto in questo oggetto ConfigurationSectionCollection.

GetObjectData(SerializationInfo, StreamingContext)
Obsoleti.

Utilizzato dal sistema durante la serializzazione.

GetObjectData(SerializationInfo, StreamingContext)
Obsoleti.

Implementa l'interfaccia ISerializable e restituisce i dati necessari a serializzare l'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnDeserialization(Object)

Implementa l'interfaccia ISerializable e genera l'evento di deserializzazione quando la deserializzazione è completa.

(Ereditato da NameObjectCollectionBase)
Remove(String)

Rimuove l'oggetto ConfigurationSection specificato da questo oggetto ConfigurationSectionCollection.

RemoveAt(Int32)

Rimuove l'oggetto ConfigurationSection specificato da questo oggetto ConfigurationSectionCollection.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ICollection.CopyTo(Array, Int32)

Copia l'intero oggetto NameObjectCollectionBase in un oggetto Array compatibile unidimensionale, a partire dall'indice specificato della matrice di destinazione.

(Ereditato da NameObjectCollectionBase)
ICollection.IsSynchronized

Ottiene un valore che indica se l'accesso all'oggetto NameObjectCollectionBase è sincronizzato (thread-safe).

(Ereditato da NameObjectCollectionBase)
ICollection.SyncRoot

Ottiene un oggetto che può essere usato per sincronizzare l'accesso all'oggetto NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)

Metodi di estensione

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.

Si applica a

Prodotto Versioni
.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
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Vedi anche