Condividi tramite


ConfigurationSection Classe

Definizione

Rappresenta una sezione all'interno di un file di configurazione.

public ref class ConfigurationSection abstract : System::Configuration::ConfigurationElement
public abstract class ConfigurationSection : System.Configuration.ConfigurationElement
type ConfigurationSection = class
    inherit ConfigurationElement
Public MustInherit Class ConfigurationSection
Inherits ConfigurationElement
Ereditarietà
ConfigurationSection
Derivato

Esempio

Nell'esempio seguente viene illustrato come implementare una sezione personalizzata a livello di codice.

Per un esempio completo che illustra come implementare e usare una sezione personalizzata implementata usando il modello con attributi, vedere ConfigurationElement.

// Define a custom section.
// The CustomSection type allows to define a custom section 
// programmatically.
public sealed class CustomSection : 
    ConfigurationSection
{
    // The collection (property bag) that contains 
    // the section properties.
    private static ConfigurationPropertyCollection _Properties;
    
    // Internal flag to disable 
    // property setting.
    private static bool _ReadOnly;

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

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

    private new bool IsReadOnly
    {
        get
        {
            return _ReadOnly;
        }
    }

    // Use this to disable property setting.
    private void ThrowIfReadOnly(string propertyName)
    {
        if (IsReadOnly)
            throw new ConfigurationErrorsException(
                "The property " + propertyName + " is read only.");
    }

    // Customizes the use of CustomSection
    // by setting _ReadOnly to false.
    // Remember you must use it along with ThrowIfReadOnly.
    protected override object GetRuntimeObject()
    {
        // To enable property setting just assign true to
        // the following flag.
        _ReadOnly = true;
        return base.GetRuntimeObject();
    }


    [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
        MinLength = 1, MaxLength = 60)]
    public string FileName
    {
        get
        {
            return (string)this["fileName"];
        }
        set
        {
            // With this you disable the setting.
            // Remember that the _ReadOnly flag must
            // be set to true in the GetRuntimeObject.
            ThrowIfReadOnly("FileName");
            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;
        }
    }
}
' Define a custom section.
' The CustomSection type allows to define a custom section 
' programmatically.

NotInheritable Public Class CustomSection
   Inherits ConfigurationSection
   ' The collection (property bag) that contains 
   ' the section properties.
   Private Shared _Properties As ConfigurationPropertyCollection
   
   ' Internal flag to disable 
   ' property setting.
   Private Shared _ReadOnly As Boolean
   
   ' The FileName property.
    Private Shared _FileName As New ConfigurationProperty( _
    "fileName", GetType(String), _
    "default.txt", _
    ConfigurationPropertyOptions.IsRequired)
   
   ' The MaxUsers property.
    Private Shared _MaxUsers As New ConfigurationProperty( _
    "maxUsers", GetType(Long), _
    CType(1000, Long), _
    ConfigurationPropertyOptions.None)
   
   ' The MaxIdleTime property.
    Private Shared _MaxIdleTime As New ConfigurationProperty( _
    "maxIdleTime", GetType(TimeSpan), _
    TimeSpan.FromMinutes(5), _
    ConfigurationPropertyOptions.IsRequired)
   
   
   ' CustomSection constructor.
   Public Sub New()
      ' Property initialization
        _Properties = _
        New ConfigurationPropertyCollection()
      
      _Properties.Add(_FileName)
      _Properties.Add(_MaxUsers)
      _Properties.Add(_MaxIdleTime)
   End Sub
   
   
   ' This is a key customization. 
   ' It returns the initialized property bag.
    Protected Overrides ReadOnly Property Properties() _
    As ConfigurationPropertyCollection
        Get
            Return _Properties
        End Get
    End Property
   
   
   
   Private Shadows ReadOnly Property IsReadOnly() As Boolean
      Get
         Return _ReadOnly
      End Get
   End Property
   
   
   ' Use this to disable property setting.
   Private Sub ThrowIfReadOnly(propertyName As String)
      If IsReadOnly Then
            Throw New ConfigurationErrorsException( _
            "The property " + propertyName + " is read only.")
      End If
   End Sub
   
   
   
   ' Customizes the use of CustomSection
    ' by setting _ReadOnly to false.
   ' Remember you must use it along with ThrowIfReadOnly.
   Protected Overrides Function GetRuntimeObject() As Object
      ' To enable property setting just assign true to
      ' the following flag.
      _ReadOnly = True
      Return MyBase.GetRuntimeObject()
   End Function 'GetRuntimeObject
   
   
    <StringValidator( _
    InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
    MinLength:=1, MaxLength:=60)> _
    Public Property FileName() As String
        Get
            Return CStr(Me("fileName"))
        End Get
        Set(ByVal value As String)
            ' With this you disable the setting.
            ' Remember that the _ReadOnly flag must
            ' be set to true in the GetRuntimeObject.
            ThrowIfReadOnly("FileName")
            Me("fileName") = value
        End Set
    End Property
   
   
    <LongValidator( _
    MinValue:=1, MaxValue:=1000000, _
    ExcludeRange:=False)> _
    Public Property MaxUsers() As Long
        Get
            Return Fix(Me("maxUsers"))
        End Get
        Set(ByVal value As Long)
            Me("maxUsers") = Value
        End Set
    End Property
   
   
    <TimeSpanValidator( _
    MinValueString:="0:0:30", _
    MaxValueString:="5:00:0", ExcludeRange:=False)> _
    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

L'esempio seguente è un estratto del file di configurazione applicato all'esempio precedente.

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
   <configSections>
     <section name="CustomSection" type="Samples.AspNet. CustomSection, CustomConfigurationSection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" />
   </configSections>

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

 </configuration>

Commenti

Usare la ConfigurationSection classe per implementare un tipo di sezione personalizzato. Estendere la ConfigurationSection classe per fornire la gestione personalizzata e l'accesso a livello di codice alle sezioni di configurazione personalizzate. Per informazioni sull'uso delle sezioni di configurazione personalizzate, vedere Procedura: Creare sezioni di configurazione personalizzate tramite ConfigurationSection.

Una sezione registra il tipo di gestione con una voce nell'elemento configSections . Per un esempio, vedere l'estratto del file di configurazione illustrato nella sezione Esempio.

Nota

Nelle versioni precedenti di .NET Framework, i gestori di sezione di configurazione sono stati usati per apportare modifiche alle impostazioni di configurazione a livello di codice. Tutte le sezioni di configurazione predefinite sono ora rappresentate da classi che estendono la ConfigurationSection classe .

Note per gli implementatori

È possibile usare un modello di codifica dichiarativo (con attributi) a livello di codice per creare sezioni di configurazione personalizzate:

  • Modello programmatico. Questo modello richiede che per ogni attributo di sezione si crei una proprietà per ottenere o impostare il relativo valore e aggiungerlo al contenitore di proprietà interno della classe di base sottostante ConfigurationElement .

  • Modello dichiarativo. Questo modello più semplice, detto anche modello con attributi, consente di definire un attributo di sezione usando una proprietà e decorata con attributi. Questi attributi indicano al sistema di configurazione ASP.NET i tipi di proprietà e i relativi valori predefiniti. Con queste informazioni, ottenute tramite reflection, il sistema di configurazione ASP.NET crea gli oggetti proprietà della sezione ed esegue l'inizializzazione necessaria.

La Configuration classe consente l'accesso a livello di codice per la modifica dei file di configurazione. È possibile accedere a questi file per la lettura o la scrittura come indicato di seguito:

  • Lettura. GetSection(String) Usare o GetSectionGroup(String) per leggere le informazioni di configurazione. Si noti che l'utente o il processo che legge deve avere le autorizzazioni seguenti:

    • Autorizzazione di lettura per il file di configurazione a livello di gerarchia di configurazione corrente.

    • Autorizzazioni di lettura per tutti i file di configurazione padre.

    Se l'applicazione richiede l'accesso in sola lettura alla propria configurazione, è consigliabile usare i GetSection metodi di overload nel caso di applicazioni Web o il GetSection(String) metodo nel caso delle applicazioni client.

    Questi metodi forniscono l'accesso ai valori di configurazione memorizzati nella cache per l'applicazione corrente, con prestazioni migliori rispetto alla Configuration classe .

Nota: se si utilizza un metodo statico GetSection che accetta un path parametro, il path parametro deve fare riferimento all'applicazione in cui è in esecuzione il codice. In caso contrario, il parametro viene ignorato e vengono restituite le informazioni di configurazione per l'applicazione attualmente in esecuzione.

  • Scrittura. Usare uno dei Save metodi per scrivere informazioni di configurazione. Si noti che l'utente o il processo che scrive deve avere le autorizzazioni seguenti:

    • Autorizzazione di scrittura per il file di configurazione e la directory a livello di gerarchia di configurazione corrente.

    • Autorizzazioni di lettura per tutti i file di configurazione.

Costruttori

ConfigurationSection()

Inizializza una nuova istanza della classe ConfigurationSection.

Proprietà

CurrentConfiguration

Ottiene un riferimento all'istanza di Configuration di livello superiore che rappresenta la gerarchia di configurazione cui appartiene l'istanza corrente di ConfigurationElement.

(Ereditato da ConfigurationElement)
ElementInformation

Ottiene un oggetto ElementInformation contenente le funzionalità e le informazioni non personalizzabili dell'oggetto ConfigurationElement.

(Ereditato da ConfigurationElement)
ElementProperty

Ottiene l'oggetto ConfigurationElementProperty che rappresenta l'oggetto ConfigurationElement stesso.

(Ereditato da ConfigurationElement)
EvaluationContext

Ottiene l'oggetto ContextInformation per l'oggetto ConfigurationElement.

(Ereditato da ConfigurationElement)
HasContext

Ottiene un valore che indica se la proprietà CurrentConfiguration è null.

(Ereditato da ConfigurationElement)
Item[ConfigurationProperty]

Ottiene o imposta una proprietà o un attributo di questo elemento di configurazione.

(Ereditato da ConfigurationElement)
Item[String]

Ottiene o imposta una proprietà, un attributo o un elemento figlio di questo elemento di configurazione.

(Ereditato da ConfigurationElement)
LockAllAttributesExcept

Ottiene l'insieme di attributi bloccati.

(Ereditato da ConfigurationElement)
LockAllElementsExcept

Ottiene l'insieme di elementi bloccati.

(Ereditato da ConfigurationElement)
LockAttributes

Ottiene l'insieme di attributi bloccati.

(Ereditato da ConfigurationElement)
LockElements

Ottiene l'insieme di elementi bloccati.

(Ereditato da ConfigurationElement)
LockItem

Ottiene o imposta un valore che indica se l'elemento è bloccato.

(Ereditato da ConfigurationElement)
Properties

Ottiene la raccolta di proprietà.

(Ereditato da ConfigurationElement)
SectionInformation

Ottiene un oggetto SectionInformation contenente le informazioni non personalizzabili e la funzionalità dell'oggetto ConfigurationSection.

Metodi

DeserializeElement(XmlReader, Boolean)

Legge il codice XML dal file di configurazione.

(Ereditato da ConfigurationElement)
DeserializeSection(XmlReader)

Legge il codice XML dal file di configurazione.

Equals(Object)

Confronta l'istanza corrente di ConfigurationElement con l'oggetto specificato.

(Ereditato da ConfigurationElement)
GetHashCode()

Ottiene un valore univoco che rappresenta l'istanza corrente di ConfigurationElement.

(Ereditato da ConfigurationElement)
GetRuntimeObject()

Restituisce un oggetto personalizzato quando ne viene eseguito l'override in una classe derivata.

GetTransformedAssemblyString(String)

Restituisce la versione trasformata del nome di assembly specificato.

(Ereditato da ConfigurationElement)
GetTransformedTypeString(String)

Restituisce la versione trasformata del nome del tipo specificato.

(Ereditato da ConfigurationElement)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Init()

Ripristina lo stato iniziale dell'oggetto ConfigurationElement.

(Ereditato da ConfigurationElement)
InitializeDefault()

Da utilizzare per inizializzare un insieme predefinito di valori per l'oggetto ConfigurationElement.

(Ereditato da ConfigurationElement)
IsModified()

Indica se questo elemento di configurazione è stato modificato dall'ultimo salvataggio o caricamento durante l'implementazione in una classe derivata.

IsReadOnly()

Ottiene un valore che indica se l'oggetto ConfigurationElement è di sola lettura.

(Ereditato da ConfigurationElement)
ListErrors(IList)

Aggiunge all'elenco passato gli errori di proprietà non valida di questo oggetto ConfigurationElement e di tutti i sottoelementi.

(Ereditato da ConfigurationElement)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnDeserializeUnrecognizedAttribute(String, String)

Ottiene un valore che indica se viene incontrato un attributo sconosciuto durante la deserializzazione.

(Ereditato da ConfigurationElement)
OnDeserializeUnrecognizedElement(String, XmlReader)

Ottiene un valore che indica se viene incontrato un attributo sconosciuto durante la deserializzazione.

(Ereditato da ConfigurationElement)
OnRequiredPropertyNotFound(String)

Genera un'eccezione quando una proprietà obbligatoria non viene trovata.

(Ereditato da ConfigurationElement)
PostDeserialize()

Da chiamare dopo la deserializzazione.

(Ereditato da ConfigurationElement)
PreSerialize(XmlWriter)

Da chiamare prima della serializzazione.

(Ereditato da ConfigurationElement)
Reset(ConfigurationElement)

Reimposta lo stato interno dell'oggetto ConfigurationElement, inclusi i blocchi e le raccolte di proprietà.

(Ereditato da ConfigurationElement)
ResetModified()

Reimposta il valore del metodo IsModified() su false quando viene implementato in una classe derivata.

SerializeElement(XmlWriter, Boolean)

Scrive il contenuto di questo elemento di configurazione nel file di configurazione in caso di implementazione in una classe derivata.

(Ereditato da ConfigurationElement)
SerializeSection(ConfigurationElement, String, ConfigurationSaveMode)

Crea una stringa XML contenente una visualizzazione non unita dell'oggetto ConfigurationSection come sezione singola da scrivere in un file.

SerializeToXmlElement(XmlWriter, String)

Scrive i tag esterni di questo elemento di configurazione nel file di configurazione in caso di implementazione in una classe derivata.

(Ereditato da ConfigurationElement)
SetPropertyValue(ConfigurationProperty, Object, Boolean)

Imposta una proprietà sul valore specificato.

(Ereditato da ConfigurationElement)
SetReadOnly()

Imposta la proprietà IsReadOnly() per l'oggetto ConfigurationElement e tutti i sottoelementi.

(Ereditato da ConfigurationElement)
ShouldSerializeElementInTargetVersion(ConfigurationElement, String, FrameworkName)

Indica se l'elemento specificato deve essere serializzato quando la gerarchia degli oggetti di configurazione viene serializzata per la versione di destinazione specificata di .NET Framework.

ShouldSerializePropertyInTargetVersion(ConfigurationProperty, String, FrameworkName, ConfigurationElement)

Indica se la proprietà specificata deve essere serializzata quando la gerarchia degli oggetti di configurazione viene serializzata per la versione di destinazione specificata di .NET Framework.

ShouldSerializeSectionInTargetVersion(FrameworkName)

Indica se l'istanza corrente ConfigurationSection deve essere serializzata quando la gerarchia di oggetti di configurazione viene serializzata per la versione di destinazione specificata di .NET Framework.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode)

Modifica l'oggetto ConfigurationElement in modo da rimuovere tutti i valori che non devono essere salvati.

(Ereditato da ConfigurationElement)

Si applica a

Vedi anche