ConfigurationSectionCollection 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示配置文件中相关章节的集合。
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 类。
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
以下示例是上一示例使用的配置文件的摘录。
<?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。 可以使用 属性或 Sections 属性访问此对象的Sections集合。
类 ConfigurationSectionCollection 还用于创建扩展 类的 ConfigurationSection 自定义类型。
属性
Count |
获取此 ConfigurationSectionCollection 对象中的节数。 |
Count |
获取包含在 NameObjectCollectionBase 实例中的键/值对的数目。 (继承自 NameObjectCollectionBase) |
IsReadOnly |
获取或设置一个值,通过该值指示 NameObjectCollectionBase 实例是否为只读的。 (继承自 NameObjectCollectionBase) |
Item[Int32] |
获取指定的 ConfigurationSection 对象。 |
Item[String] |
获取指定的 ConfigurationSection 对象。 |
Keys |
获取此 ConfigurationSectionCollection 对象中包含的所有 ConfigurationSection 对象的键。 |
Keys |
获取包含 NameObjectCollectionBase.KeysCollection 实例中所有键的 NameObjectCollectionBase 实例。 (继承自 NameObjectCollectionBase) |
方法
显式接口实现
ICollection.CopyTo(Array, Int32) |
从目标数组的指定索引处开始将整个 NameObjectCollectionBase 复制到兼容的一维 Array。 (继承自 NameObjectCollectionBase) |
ICollection.IsSynchronized |
获取一个值,该值指示对 NameObjectCollectionBase 对象的访问是否同步(线程安全)。 (继承自 NameObjectCollectionBase) |
ICollection.SyncRoot |
获取一个对象,该对象可用于同步对 NameObjectCollectionBase 对象的访问。 (继承自 NameObjectCollectionBase) |
扩展方法
Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定的类型。 |
OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。 |
AsParallel(IEnumerable) |
启用查询的并行化。 |
AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。 |