ConfigurationSectionCollection Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Auflistung verwandter Abschnitte innerhalb einer Konfigurationsdatei dar.
public ref class ConfigurationSectionCollection sealed : System::Collections::Specialized::NameObjectCollectionBase
public sealed class ConfigurationSectionCollection : System.Collections.Specialized.NameObjectCollectionBase
[System.Serializable]
public sealed class ConfigurationSectionCollection : System.Collections.Specialized.NameObjectCollectionBase
type ConfigurationSectionCollection = class
inherit NameObjectCollectionBase
[<System.Serializable>]
type ConfigurationSectionCollection = class
inherit NameObjectCollectionBase
Public NotInheritable Class ConfigurationSectionCollection
Inherits NameObjectCollectionBase
- Vererbung
- Attribute
Beispiele
Im folgenden Codebeispiel wird die Verwendung der ConfigurationSectionCollection-Klasse veranschaulicht.
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();
}
}
}
Imports System.Configuration
Imports System.Collections
' Define a custom section programmatically.
Public NotInheritable Class CustomSection
Inherits ConfigurationSection
' The collection (property bag) that contains
' the section properties.
Private Shared _Properties _
As ConfigurationPropertyCollection
' 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), Fix(1000), _
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
<StringValidator( _
InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
MinLength:=1, MaxLength:=60)> _
Public Property FileName() As String
Get
Return CStr(Me("fileName"))
End Get
Set(ByVal value As String)
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
Class UsingCustomSectionCollection
' Create a custom section.
Shared Sub CreateSection()
Try
Dim customSection As CustomSection
' Get the current configuration file.
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
' Create the section entry
' in the <configSections> and the
' related target section in <configuration>.
If config.Sections("CustomSection") Is Nothing Then
customSection = New CustomSection()
config.Sections.Add("CustomSection", customSection)
customSection.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
End If
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
Shared Sub GetAllKeys()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim sections _
As ConfigurationSectionCollection = _
config.Sections
Dim key As String
For Each key In sections.Keys
Console.WriteLine("Key value: {0}", key)
Next key
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
Shared Sub Clear()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
config.Sections.Clear()
config.Save( _
ConfigurationSaveMode.Full)
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
Shared Sub GetSection()
Try
Dim customSection _
As CustomSection = _
ConfigurationManager.GetSection( _
"CustomSection")
If customSection Is Nothing Then
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)
End If
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
Shared Sub GetEnumerator()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim sections _
As ConfigurationSectionCollection = _
config.Sections
Dim secEnum _
As IEnumerator = sections.GetEnumerator()
Dim i As Integer = 0
While secEnum.MoveNext()
Dim setionName _
As String = sections.GetKey(i)
Console.WriteLine( _
"Section name: {0}", setionName)
i += 1
End While
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
Shared Sub GetKeys()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim sections _
As ConfigurationSectionCollection = _
config.Sections
Dim key As String
For Each key In sections.Keys
Console.WriteLine("Key value: {0}", key)
Next key
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
Shared Sub GetItems()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim sections _
As ConfigurationSectionCollection = _
config.Sections
Dim section1 As ConfigurationSection = _
sections.Item("runtime")
Dim section2 As ConfigurationSection = _
sections.Item(0)
Console.WriteLine("Section1: {0}", _
section1.SectionInformation.Name)
Console.WriteLine("Section2: {0}", _
section2.SectionInformation.Name)
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
Shared Sub Remove()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim customSection As CustomSection = _
config.GetSection("CustomSection")
If Not (customSection Is Nothing) Then
config.Sections.Remove("CustomSection")
customSection.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
Else
Console.WriteLine( _
"CustomSection does not exists.")
End If
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
Shared Sub AddSection()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim customSection _
As New CustomSection()
Dim index As String = _
config.Sections.Count.ToString()
customSection.FileName = _
"newFile" + index + ".txt"
Dim sectionName As String = _
"CustomSection" + index
Dim ts As 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 err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
' Exercise the collection.
' Uncomment the function you want to exercise.
' Start with CreateSection().
Public Overloads Shared Sub Main(ByVal args() As String)
CreateSection()
' AddSection()
' GetSection()
' GetEnumerator()
' GetAllKeys()
' GetKeys()
GetItems()
' Clear()
' Remove()
End Sub
End Class
Das folgende Beispiel ist ein Auszug der Konfigurationsdatei, die im vorherigen Beispiel verwendet wurde.
<?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>
Hinweise
Verwenden Sie die ConfigurationSectionCollection -Klasse, um eine Auflistung von ConfigurationSection -Objekten zu durchlaufen. Sie können mit der -Eigenschaft oder der Sections -Eigenschaft auf diese Auflistung von Sections -Objekten zugreifen.
Die ConfigurationSectionCollection -Klasse wird auch bei der Erstellung von benutzerdefinierten Typen verwendet, die die ConfigurationSection -Klasse erweitern.
Eigenschaften
Count |
Ruft die Anzahl der Abschnitte in diesem ConfigurationSectionCollection-Objekt ab. |
Count |
Ruft die Anzahl von Schlüssel-Wert-Paaren in der NameObjectCollectionBase-Instanz ab. (Geerbt von NameObjectCollectionBase) |
IsReadOnly |
Ruft einen Wert ab, der angibt, ob die NameObjectCollectionBase-Instanz schreibgeschützt ist, oder legt diesen fest. (Geerbt von NameObjectCollectionBase) |
Item[Int32] |
Ruft das angegebene ConfigurationSection-Objekt ab. |
Item[String] |
Ruft das angegebene ConfigurationSection-Objekt ab. |
Keys |
Ruft die Schlüssel zu allen ConfigurationSection-Objekten ab, die in diesem ConfigurationSectionCollection-Objekt enthalten sind. |
Keys |
Ruft eine NameObjectCollectionBase.KeysCollection-Instanz ab, die alle Schlüssel in der NameObjectCollectionBase-Instanz enthält. (Geerbt von NameObjectCollectionBase) |
Methoden
Add(String, ConfigurationSection) |
Fügt dem ConfigurationSection-Objekt ein ConfigurationSectionCollection-Objekt hinzu. |
BaseAdd(String, Object) |
Fügt einen Eintrag mit dem angegebenen Schlüssel und Wert der NameObjectCollectionBase-Instanz hinzu. (Geerbt von NameObjectCollectionBase) |
BaseClear() |
Entfernt alle Einträge aus der NameObjectCollectionBase-Instanz. (Geerbt von NameObjectCollectionBase) |
BaseGet(Int32) |
Ruft den Wert des Eintrags am angegebenen Index der NameObjectCollectionBase-Instanz ab. (Geerbt von NameObjectCollectionBase) |
BaseGet(String) |
Ruft den Wert des ersten Eintrags mit dem angegebenen Schlüssel aus der NameObjectCollectionBase-Instanz ab. (Geerbt von NameObjectCollectionBase) |
BaseGetAllKeys() |
Gibt ein String-Array zurück, das alle Schlüssel der NameObjectCollectionBase-Instanz enthält. (Geerbt von NameObjectCollectionBase) |
BaseGetAllValues() |
Gibt ein Object-Array zurück, das alle Werte der NameObjectCollectionBase-Instanz enthält. (Geerbt von NameObjectCollectionBase) |
BaseGetAllValues(Type) |
Gibt ein Array des angegebenen Typs zurück, das alle Werte der NameObjectCollectionBase-Instanz enthält. (Geerbt von NameObjectCollectionBase) |
BaseGetKey(Int32) |
Ruft den Schlüssel des Eintrags am angegebenen Index der NameObjectCollectionBase-Instanz ab. (Geerbt von NameObjectCollectionBase) |
BaseHasKeys() |
Ruft einen Wert ab, der angibt, ob die NameObjectCollectionBase-Instanz Einträge enthält, deren Schlüssel nicht |
BaseRemove(String) |
Entfernt die Einträge mit dem angegebenen Schlüssel aus der NameObjectCollectionBase-Instanz. (Geerbt von NameObjectCollectionBase) |
BaseRemoveAt(Int32) |
Entfernt den Eintrag am angegebenen Index der NameObjectCollectionBase-Instanz. (Geerbt von NameObjectCollectionBase) |
BaseSet(Int32, Object) |
Legt den Wert des Eintrags am angegebenen Index der NameObjectCollectionBase-Instanz fest. (Geerbt von NameObjectCollectionBase) |
BaseSet(String, Object) |
Legt den Wert des ersten Eintrags mit dem angegebenen Schlüssel in der NameObjectCollectionBase-Instanz fest. Wenn der Schlüssel nicht vorhanden ist, wird der NameObjectCollectionBase-Instanz ein Eintrag mit dem angegebenen Wert und Schlüssel hinzugefügt. (Geerbt von NameObjectCollectionBase) |
Clear() |
Löscht dieses ConfigurationSectionCollection-Objekt. |
CopyTo(ConfigurationSection[], Int32) |
Kopiert dieses ConfigurationSectionCollection-Objekt in ein Array. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
Get(Int32) |
Ruft das angegebene ConfigurationSection-Objekt ab, das in diesem ConfigurationSectionCollection-Objekt enthalten ist. |
Get(String) |
Ruft das angegebene ConfigurationSection-Objekt ab, das in diesem ConfigurationSectionCollection-Objekt enthalten ist. |
GetEnumerator() |
Ruft einen Enumerator ab, der dieses ConfigurationSectionCollection-Objekt durchlaufen kann. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetKey(Int32) |
Ruft den Schlüssel des angegebenen ConfigurationSection-Objekts ab, das in diesem ConfigurationSectionCollection-Objekt enthalten ist. |
GetObjectData(SerializationInfo, StreamingContext) |
Veraltet.
Wird vom System während der Serialisierung verwendet. |
GetObjectData(SerializationInfo, StreamingContext) |
Veraltet.
Implementiert die ISerializable-Schnittstelle und gibt die zum Serialisieren der NameObjectCollectionBase-Instanz erforderlichen Daten zurück. (Geerbt von NameObjectCollectionBase) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
OnDeserialization(Object) |
Implementiert die ISerializable-Schnittstelle und löst das Deserialisierungsereignis aus, sobald die Deserialisierung abgeschlossen ist. (Geerbt von NameObjectCollectionBase) |
Remove(String) |
Entfernt das angegebene ConfigurationSection-Objekt aus diesem ConfigurationSectionCollection-Objekt. |
RemoveAt(Int32) |
Entfernt das angegebene ConfigurationSection-Objekt aus diesem ConfigurationSectionCollection-Objekt. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
ICollection.CopyTo(Array, Int32) |
Kopiert die gesamte NameObjectCollectionBase-Instanz in ein kompatibles eindimensionales Array, beginnend am angegebenen Index des Zielarrays. (Geerbt von NameObjectCollectionBase) |
ICollection.IsSynchronized |
Ruft einen Wert ab, der angibt, ob der Zugriff auf das NameObjectCollectionBase-Objekt synchronisiert (threadsicher) ist. (Geerbt von NameObjectCollectionBase) |
ICollection.SyncRoot |
Ruft ein Objekt ab, mit dem der Zugriff auf das NameObjectCollectionBase-Objekt synchronisiert werden kann. (Geerbt von NameObjectCollectionBase) |
Erweiterungsmethoden
Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um |
OfType<TResult>(IEnumerable) |
Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs |
AsParallel(IEnumerable) |
Ermöglicht die Parallelisierung einer Abfrage. |
AsQueryable(IEnumerable) |
Konvertiert einen IEnumerable in einen IQueryable. |