System.Configuration.ConfigurationSection 类

方法描述

表示配置文件中的节。

语法定义(C# System.Configuration.ConfigurationSection 类 的用法)

public abstract class ConfigurationSection : ConfigurationElement

构造函数

构造函数名称 构造函数描述
ConfigurationSection 初始化 ConfigurationSection 类的新实例。

成员/方法

方法名称 方法描述
DeserializeElement 读取配置文件中的 XML。 (继承自 ConfigurationElement。)
DeserializeSection 基础结构。读取配置文件中的 XML。
Equals 将当前的 ConfigurationElement 实例与指定的对象进行比较。 (继承自 ConfigurationElement。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetHashCode 获取一个唯一值,表示当前 ConfigurationElement 实例。 (继承自 ConfigurationElement。)
GetRuntimeObject 在派生的类中重写时返回自定义对象。
GetTransformedAssemblyString 返回指定程序集名称的转换版本。 (继承自 ConfigurationElement。)
GetTransformedTypeString 返回指定类型名称的转换版本。 (继承自 ConfigurationElement。)
GetType 获取当前实例的 Type。 (继承自 Object。)
Init 将 ConfigurationElement 对象设置为其初始状态。 (继承自 ConfigurationElement。)
InitializeDefault 用于初始化 ConfigurationElement 对象的默认值集。 (继承自 ConfigurationElement。)
IsModified 指示自上次在派生类中实现此配置元素时保存或加载以来是否对其进行过修改。 (重写 ConfigurationElement.IsModified()。)
IsReadOnly 获取一个值,该值指示 ConfigurationElement 对象是否为只读。 (继承自 ConfigurationElement。)
ListErrors 将此 ConfigurationElement 对象以及所有子元素中无效属性的错误添加到传递的列表中。 (继承自 ConfigurationElement。)
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
OnDeserializeUnrecognizedAttribute 获取一个值,该值指示反序列化过程中是否遇到未知特性。 (继承自 ConfigurationElement。)
OnDeserializeUnrecognizedElement 获取一个值,该值指示反序列化过程中是否遇到未知元素。 (继承自 ConfigurationElement。)
OnRequiredPropertyNotFound 未找到所需属性时引发异常。 (继承自 ConfigurationElement。)
PostDeserialize 反序列化后调用。 (继承自 ConfigurationElement。)
PreSerialize 序列化前调用。 (继承自 ConfigurationElement。)
Reset 重置 ConfigurationElement 对象的内部状态,包括锁和属性集合。 (继承自 ConfigurationElement。)
ResetModified 在派生类中实现时,将 IsModified 方法的值重置为 false。 (重写 ConfigurationElement.ResetModified()。)
SerializeElement 当在派生类中实现后,将此配置元素的内容写入配置文件。 (继承自 ConfigurationElement。)
SerializeSection 基础结构。创建一个包含 ConfigurationSection 对象的分离视图的 XML 字符串,作为单独的节写入到文件中。
SerializeToXmlElement 当在派生类中实现后,将此配置元素的外部标记写入配置文件。 (继承自 ConfigurationElement。)
SetPropertyValue 将属性设置为指定值。 (继承自 ConfigurationElement。)
SetReadOnly 设置 ConfigurationElement 对象及所有子元素的 IsReadOnly 属性。 (继承自 ConfigurationElement。)
ShouldSerializeElementInTargetVersion 指示在为 .NET Framework 的指定目标版本序列化配置对象层次结构时,是否应序列化指定元素。
ShouldSerializePropertyInTargetVersion 指示在为指定目标版本的 .NET Framework 序列化配置对象层次结构时,是否应序列化指定属性。
ShouldSerializeSectionInTargetVersion 指示在为指定目标版本的 .NET Framework 序列化配置对象层次结构时,是否应序列化当前的 ConfigurationSection 实例。
ToString 返回表示当前对象的字符串。 (继承自 Object。)
Unmerge 修改 ConfigurationElement 对象以移除所有将不被保存的值。 (继承自 ConfigurationElement。)

提示和注释

可以使用 ConfigurationSection 类实现自定义的节类型。 扩展 ConfigurationSection 类,以便对自定义配置节提供自定义处理和编程访问。 有关如何使用自定义配置节的信息,请参见如何:使用 ConfigurationSection 创建自定义配置节。

节使用 configSections 元素中的项注册其处理类型。 有关示例,请参见示例部分中所示的配置文件节选。

注意

在早期版本的 .NET Framework 中,配置节处理程序用于通过编程方式对配置设置进行更改。 现在,所有的默认配置节都由扩展 ConfigurationSection 类的类来表示。

对实现者的说明

可以使用编程或声明性(特性化)代码编写模型创建自定义配置节:

编程模型。 此模型要求为每个节特性创建一个用于获取或设置其值的属性,并将其添加到基础 ConfigurationElement 基类的内部属性包中。

声明性模型。 此模型(也称为特性化模型)相对简单,它允许您使用属性定义一个节特性,并通过特性对该节属性进行修饰。 这些特性将属性类型及其默认值通知给 ASP.NET 配置系统。 利用通过反射获取的此信息,ASP.NET 配置系统将创建节属性对象并执行所需的初始化。

Configuration 类允许进行编程访问以编辑配置文件。 可以按如下方式访问这些文件以进行读取或写入。

读取。 使用 GetSection 或 GetSectionGroup 读取配置信息。 请注意,进行读取操作的用户或进程必须具有以下权限:

在当前配置层次结构级别下对配置文件的读取权限。

对所有父级配置文件进行读取的权限。

如果应用程序需要以只读方式访问其自身配置,则对于 Web 应用程序,建议使用 GetSection() 重载方法;对于客户端应用程序,建议使用 ConfigurationManager.GetSection 方法。

这些方法提供对当前应用程序的缓存配置值的访问;与 Configuration 类相比,这样做可以提供更好的性能。

注意

如果使用静态 GetSection 方法,其采用了 path 参数,则该 path 参数必须引用正在其中运行该代码的应用程序;否则将忽略该参数并返回当前运行的应用程序的配置信息。

写入。 使用 Save 方法之一写入配置信息。 请注意,进行写入操作的用户或进程必须具有以下权限:

对配置层次结构中当前级别的配置文件和目录的写入权限。

对所有配置文件的读取权限。

Topic

Location

如何:使用 ConfigurationSection 创建自定义配置节配置 ASP .NET Web 应用程序

如何:使用 IConfigurationSectionHandler 创建自定义配置节配置 ASP .NET Web 应用程序

如何:使用 IConfigurationSectionHandler 创建自定义配置节在 Visual Studio 中生成 ASP .NET Web 应用程序

如何:使用 ConfigurationSection 创建自定义配置节在 Visual Studio 中生成 ASP .NET Web 应用程序

如何:使用 IConfigurationSectionHandler 创建自定义配置节在 Visual Studio 中生成 ASP .NET Web 应用程序

如何:使用 ConfigurationSection 创建自定义配置节在 Visual Studio 中生成 ASP .NET Web 应用程序

System.Configuration.ConfigurationSection 类例子

下面的示例摘自应用于上一示例的配置文件。

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


}

继承层次结构

System.Object

System.Configuration.ConfigurationElement

System.Configuration.ConfigurationSection

更多...

命名空间

namespace: System.Configuration

程序集: System.Configuration(在 System.Configuration.dll 中)

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。