Assembly : System.Configuration (dans system.configuration.dll)
SyntaxePublic MustInherit Class ConfigurationSection Inherits ConfigurationElement
Dim instance As ConfigurationSection
public abstract class ConfigurationSection : ConfigurationElement
public ref class ConfigurationSection abstract : public ConfigurationElement
public abstract class ConfigurationSection extends ConfigurationElement
public abstract class ConfigurationSection extends ConfigurationElement
NotesVous utilisez ConfigurationSection pour implémenter un type de section personnalisé. Étendez la classe ConfigurationSection pour fournir une gestion personnalisée et un accès par programme aux sections de configuration personnalisées.
Une section enregistre son type de gestion avec une entrée dans configSections.
Reportez-vous à l'extrait de fichier de configuration dans l'exemple ci-dessous.
Remarque |
|---|
| Dans les versions antérieures du .NET Framework, les gestionnaires de section de configuration étaient utilisés pour apporter des modifications aux paramètres de configuration par programme. Désormais, toutes les sections de configuration par défaut sont représentées par des classes qui étendent la classe ConfigurationSection. |
-
Modèle de programmation. Ce modèle nécessite pour chaque attribut de section la création d'une propriété afin d'obtenir et/ou définir sa valeur et de l'ajouter au sac de propriétés interne de la classe de base ConfigurationElement sous-jacente.
-
Modèle déclaratif. Ce modèle plus simple, également appelé modèle attribué, vous permet de définir un attribut de section au moyen d'une propriété et de le décorer avec des attributs. Ces attributs indiquent au système de configuration ASP.NET quels sont les types des propriétés et leurs valeurs par défaut. Avec ces informations, obtenues par réflexion, le système de configuration ASP.NET crée pour vous les objets de propriétés de section et exécute l'initialisation requise.
-
Lecture. Vous utilisez GetSection ou GetSectionGroup pour lire les informations de configuration. Notez que l'utilisateur ou le processus qui lit doit avoir les autorisations suivantes :
-
Autorisation en lecture sur le fichier de configuration au niveau de la hiérarchie de configuration en cours.
-
Autorisations en lecture sur tous les fichiers de configuration parents.
-
Remarque |
|---|
| Si vous utilisez une méthode GetSection statique qui utilise un paramètre Path, ce paramètre doit faire référence à l'application dans laquelle le code s'exécute ; sinon, il est ignoré et les informations de configuration pour l'application en cours d'exécution sont retournées. |
-
Écriture. Vous utilisez l'une des méthodes Save pour écrire des informations de configuration. Notez que l'utilisateur ou le processus qui écrit doit avoir les autorisations suivantes :
-
Autorisation en écriture sur le fichier de configuration et le répertoire au niveau de la hiérarchie de configuration en cours.
-
Autorisations en lecture sur tous les fichiers de configuration.
-
ExempleL'exemple suivant montre comment implémenter une section personnalisée par programme.
Reportez-vous à ConfigurationElement pour obtenir un exemple complet illustrant l'implémentation et l'utilisation d'une section personnalisée implémentée à l'aide du modèle par attributs.
' Define a custom section. ' The CustomSection type alows to define a custom section ' programmatically. NotInheritable Public Class CustomSection Inherits ConfigurationSection ' The collection (property bag) that conatains ' 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 MasUsers 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 'New ' 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 'ThrowIfReadOnly ' 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. ' Renemmber 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 'CustomSection
// Define a custom section. // The CustomSection type alows to define a custom section // programmatically. public sealed class CustomSection : ConfigurationSection { // The collection (property bag) that conatains // 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 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; } } 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. // Renemmber 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; } } }
Il s'agit d'un extrait du fichier de configuration tel qu'il s'applique à l'exemple précédent.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="CustomSection" type="Samples.AspNet, 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>
Hiérarchie d'héritageSystem.Configuration.ConfigurationElement
System.Configuration.ConfigurationSection
Classes dérivées
Sécurité des threads
Plates-formesWindows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Remarque
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ