ConfigurationSectionCollection 类
定义
表示配置文件中相关章节的集合。Represents a collection of related sections within a configuration file.
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
- 继承
- 属性
示例
下面的代码示例演示如何使用 ConfigurationSectionCollection 类。The following code example shows how to use the ConfigurationSectionCollection class.
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
下面的示例摘自上一个示例所使用的配置文件。The following example is an excerpt of the configuration file used by the previous example.
<?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>
注解
使用 ConfigurationSectionCollection 类可循环访问对象的集合 ConfigurationSection 。Use the ConfigurationSectionCollection class to iterate through a collection of ConfigurationSection objects. 您可以使用属性或属性访问此对象集合 Sections Sections 。You can access this collection of objects using the Sections property or the Sections property.
ConfigurationSectionCollection类还用于创建扩展类的自定义类型 ConfigurationSection 。The ConfigurationSectionCollection class is also used in the creation of custom types that extend the ConfigurationSection class.
属性
Count |
获取此 ConfigurationSectionCollection 对象中的节数。Gets the number of sections in this ConfigurationSectionCollection object. |
IsReadOnly |
获取或设置一个值,通过该值指示 NameObjectCollectionBase 实例是否为只读的。Gets or sets a value indicating whether the NameObjectCollectionBase instance is read-only. (继承自 NameObjectCollectionBase) |
Item[Int32] |
获取指定的 ConfigurationSection 对象。Gets the specified ConfigurationSection object. |
Item[String] |
获取指定的 ConfigurationSection 对象。Gets the specified ConfigurationSection object. |
Keys |
获取此 ConfigurationSectionCollection 对象中包含的所有 ConfigurationSection 对象的键。Gets the keys to all ConfigurationSection objects contained in this ConfigurationSectionCollection object. |
方法
Add(String, ConfigurationSection) |
向 ConfigurationSectionCollection 对象添加一个 ConfigurationSection 对象。Adds a ConfigurationSection object to the ConfigurationSectionCollection object. |
BaseAdd(String, Object) |
将具有指定键和值的项添加到 NameObjectCollectionBase 实例中。Adds an entry with the specified key and value into the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseClear() |
移除 NameObjectCollectionBase 实例中的所有项。Removes all entries from the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseGet(Int32) |
获取 NameObjectCollectionBase 实例的指定索引处的项值。Gets the value of the entry at the specified index of the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseGet(String) |
获取 NameObjectCollectionBase 实例中第一个具有指定键的项值。Gets the value of the first entry with the specified key from the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseGetAllKeys() |
返回 String 数组,该数组包含 NameObjectCollectionBase 实例中的所有键。Returns a String array that contains all the keys in the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseGetAllValues() |
返回 Object 数组,该数组包含 NameObjectCollectionBase 实例中的所有值。Returns an Object array that contains all the values in the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseGetAllValues(Type) |
返回指定类型的数组,该数组包含 NameObjectCollectionBase 实例中的所有值。Returns an array of the specified type that contains all the values in the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseGetKey(Int32) |
获取 NameObjectCollectionBase 实例的指定索引处的项键。Gets the key of the entry at the specified index of the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseHasKeys() |
获取一个值,通过该值指示 NameObjectCollectionBase 实例是否包含键不为 |
BaseRemove(String) |
移除 NameObjectCollectionBase 实例中具有指定键的项。Removes the entries with the specified key from the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseRemoveAt(Int32) |
移除 NameObjectCollectionBase 实例的指定索引处的项。Removes the entry at the specified index of the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseSet(Int32, Object) |
设置 NameObjectCollectionBase 实例的指定索引处的项值。Sets the value of the entry at the specified index of the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
BaseSet(String, Object) |
为 NameObjectCollectionBase 实例中第一个具有指定键的项设置值(如果有这样的项);否则将具有指定键和值的项添加到 NameObjectCollectionBase 实例中。Sets the value of the first entry with the specified key in the NameObjectCollectionBase instance, if found; otherwise, adds an entry with the specified key and value into the NameObjectCollectionBase instance. (继承自 NameObjectCollectionBase) |
Clear() |
清除此 ConfigurationSectionCollection 对象。Clears this ConfigurationSectionCollection object. |
CopyTo(ConfigurationSection[], Int32) |
将此 ConfigurationSectionCollection 对象复制到数组。Copies this ConfigurationSectionCollection object to an array. |
Equals(Object) |
确定指定对象是否等于当前对象。Determines whether the specified object is equal to the current object. (继承自 Object) |
Get(Int32) |
获取此 ConfigurationSectionCollection 对象中包含的指定 ConfigurationSection 对象。Gets the specified ConfigurationSection object contained in this ConfigurationSectionCollection object. |
Get(String) |
获取此 ConfigurationSectionCollection 对象中包含的指定 ConfigurationSection 对象。Gets the specified ConfigurationSection object contained in this ConfigurationSectionCollection object. |
GetEnumerator() |
获取可循环访问此 ConfigurationSectionCollection 对象的枚举器。Gets an enumerator that can iterate through this ConfigurationSectionCollection object. |
GetHashCode() |
作为默认哈希函数。Serves as the default hash function. (继承自 Object) |
GetKey(Int32) |
获取此 ConfigurationSectionCollection 对象中包含的指定 ConfigurationSection 对象的键。Gets the key of the specified ConfigurationSection object contained in this ConfigurationSectionCollection object. |
GetObjectData(SerializationInfo, StreamingContext) |
由系统在序列化期间使用。Used by the system during serialization. |
GetType() |
获取当前实例的 Type。Gets the Type of the current instance. (继承自 Object) |
MemberwiseClone() |
创建当前 Object 的浅表副本。Creates a shallow copy of the current Object. (继承自 Object) |
OnDeserialization(Object) |
实现 ISerializable 接口,并在完成反序列化之后引发反序列化事件。Implements the ISerializable interface and raises the deserialization event when the deserialization is complete. (继承自 NameObjectCollectionBase) |
Remove(String) |
从此 ConfigurationSectionCollection 对象中移除指定的 ConfigurationSection 对象。Removes the specified ConfigurationSection object from this ConfigurationSectionCollection object. |
RemoveAt(Int32) |
从此 ConfigurationSectionCollection 对象中移除指定的 ConfigurationSection 对象。Removes the specified ConfigurationSection object from this ConfigurationSectionCollection object. |
ToString() |
返回表示当前对象的字符串。Returns a string that represents the current object. (继承自 Object) |
显式接口实现
ICollection.CopyTo(Array, Int32) |
从目标数组的指定索引处开始将整个 NameObjectCollectionBase 复制到兼容的一维 Array。Copies the entire NameObjectCollectionBase to a compatible one-dimensional Array, starting at the specified index of the target array. (继承自 NameObjectCollectionBase) |
ICollection.IsSynchronized |
获取一个值,该值指示对 NameObjectCollectionBase 对象的访问是否同步(线程安全)。Gets a value indicating whether access to the NameObjectCollectionBase object is synchronized (thread safe). (继承自 NameObjectCollectionBase) |
ICollection.SyncRoot |
获取一个对象,该对象可用于同步对 NameObjectCollectionBase 对象的访问。Gets an object that can be used to synchronize access to the NameObjectCollectionBase object. (继承自 NameObjectCollectionBase) |
扩展方法
Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定的类型。Casts the elements of an IEnumerable to the specified type. |
OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。Filters the elements of an IEnumerable based on a specified type. |
AsParallel(IEnumerable) |
启用查询的并行化。Enables parallelization of a query. |
AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。Converts an IEnumerable to an IQueryable. |