ConfigurationProperty Класс

Определение

Представляет атрибут или дочерний элемент конфигурации. Этот класс не наследуется.

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

public ref class ConfigurationProperty sealed
public sealed class ConfigurationProperty
type ConfigurationProperty = class
Public NotInheritable Class ConfigurationProperty
Наследование
ConfigurationProperty

Примеры

  1. В следующем примере кода показано, как использовать ConfigurationProperty при создании пользовательского раздела.
using System;
using System.Configuration;
using System.Collections;
using System.ComponentModel;

namespace ConfigurationPropertyExample
{
    // Define a custom section.
    // Shows how to use the ConfigurationProperty
    // class when defining a custom section.
    public sealed class CustomSection : ConfigurationSection
    {
        // The collection (property bag) that contains 
        // the section properties.
        private static ConfigurationPropertyCollection _Properties;

        // The FileName property.
        private static ConfigurationProperty _FileName;

        // The Alias property.
        private static ConfigurationProperty _Alias;

        // The MaxUsers property.
        private static ConfigurationProperty _MaxUsers;

        // The MaxIdleTime property.
        private static ConfigurationProperty _MaxIdleTime;

        // CustomSection constructor.
        static CustomSection()
        {
            // Initialize the _FileName property
            _FileName =
                new ConfigurationProperty("fileName",
                typeof(string), "default.txt");

            // Initialize the _MaxUsers property
            _MaxUsers =
                new ConfigurationProperty("maxUsers",
                typeof(long), (long)1000,
                ConfigurationPropertyOptions.None);

            // Initialize the _MaxIdleTime property
            TimeSpan minTime = TimeSpan.FromSeconds(30);
            TimeSpan maxTime = TimeSpan.FromMinutes(5);

            ConfigurationValidatorBase _TimeSpanValidator =
                new TimeSpanValidator(minTime, maxTime, false);

            _MaxIdleTime =
                new ConfigurationProperty("maxIdleTime",
                typeof(TimeSpan), TimeSpan.FromMinutes(5),
                TypeDescriptor.GetConverter(typeof(TimeSpan)),
                _TimeSpanValidator,
                ConfigurationPropertyOptions.IsRequired,
                "[Description:This is the max idle time.]");

            // Initialize the _Alias property
            _Alias =
                new ConfigurationProperty("alias",
                typeof(string), "alias.txt");

            // Initialize the Property collection.
            _Properties = new ConfigurationPropertyCollection();
            _Properties.Add(_FileName);
            _Properties.Add(_Alias);
            _Properties.Add(_MaxUsers);
            _Properties.Add(_MaxIdleTime);
        }

        // Return the initialized property bag
        // for the configuration element.
        protected override ConfigurationPropertyCollection Properties
        {
            get
            {
                return _Properties;
            }
        }

        // Clear the property.
        public void ClearCollection()
        {
            Properties.Clear();
        }

        // Remove an element from the property collection.
        public void RemoveCollectionElement(string elName)
        {
            Properties.Remove(elName);
        }

        // Get the property collection enumerator.
        public IEnumerator GetCollectionEnumerator()
        {
            return (Properties.GetEnumerator());
        }

        [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
            MinLength = 1, MaxLength = 60)]
        public string FileName
        {
            get
            {
                return (string)this["fileName"];
            }
            set
            {
                this["fileName"] = value;
            }
        }

        [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
            MinLength = 1, MaxLength = 60)]
        public string Alias
        {
            get
            {
                return (string)this["alias"];
            }
            set
            {
                this["alias"] = value;
            }
        }

        [LongValidator(MinValue = 1, MaxValue = 1000000,
            ExcludeRange = false)]
        public long MaxUsers
        {
            get
            {
                return (long)this["maxUsers"];
            }
            set
            {
                this["maxUsers"] = value;
            }
        }

        public TimeSpan MaxIdleTime
        {
            get
            {
                return (TimeSpan)this["maxIdleTime"];
            }
            set
            {
                this["maxIdleTime"] = value;
            }
        }
    }
}
Imports System.Configuration
Imports System.Collections
Imports System.ComponentModel

' Define a custom section.
' Shows how to use the ConfigurationProperty
' class when defining a custom section.
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 ConfigurationProperty

    ' The Alias property.
    Private Shared _Alias As ConfigurationProperty

    ' The MasUsers property.
    Private Shared _MaxUsers As ConfigurationProperty

    ' The MaxIdleTime property.
    Private Shared _MaxIdleTime As ConfigurationProperty

    ' CustomSection constructor.
    Shared Sub New()

        ' Initialize the _FileName property
        _FileName = New ConfigurationProperty( _
            "fileName", GetType(String), "default.txt")

        ' Initialize the _MaxUsers property
        _MaxUsers = New ConfigurationProperty( _
            "maxUsers", GetType(Long), 1000L, _
            ConfigurationPropertyOptions.None)

        ' Initialize the _MaxIdleTime property
        Dim minTime As TimeSpan = TimeSpan.FromSeconds(30)
        Dim maxTime As TimeSpan = TimeSpan.FromMinutes(5)
        Dim _TimeSpanValidator = _
            New TimeSpanValidator(minTime, maxTime, False)

        _MaxIdleTime = New ConfigurationProperty( _
            "maxIdleTime", GetType(TimeSpan), _
            TimeSpan.FromMinutes(5), _
            TypeDescriptor.GetConverter(GetType(TimeSpan)), _
            _TimeSpanValidator, _
            ConfigurationPropertyOptions.IsRequired, _
            "[Description:This is the max idle time.]")

        ' Initialize the _Alias property
        _Alias = New ConfigurationProperty( _
            "alias", GetType(String), "alias.txt")

        ' Property collection initialization.
        ' The collection (property bag) that contains 
        ' the properties is declared as:
        ' ConfigurationPropertyCollection _Properties;
        _Properties = New ConfigurationPropertyCollection()
        _Properties.Add(_FileName)
        _Properties.Add(_Alias)
        _Properties.Add(_MaxUsers)
        _Properties.Add(_MaxIdleTime)

    End Sub

    ' Return the initialized property bag
    ' for the configuration element.
    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

    <StringValidator(InvalidCharacters:= _
    " ~!@#$%^&*()[]{}/;'""|\", MinLength:=1, _
    MaxLength:=60)> _
    Public Property [Alias]() As String
        Get
            Return CStr(Me("alias"))
        End Get
        Set(ByVal value As String)
            Me("alias") = 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

    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

Ниже приведен фрагмент файла конфигурации, который используется кодом из предыдущего примера.

<configuration>
  <configSections>
    <section name="CustomSection" type="ConfigurationPropertyExample.CustomSection, ConfigurationPropertyExample" 
      allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" 
      restartOnExternalChanges="true" />
  </configSections>
  <CustomSection fileName="override.txt" alias="alias.txt" 
    maxUsers="1000" maxIdleTime="00:05:00" />
</configuration>

В следующем примере показано, как создать предыдущий раздел в коде.

// Define a custom section programmatically.
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>.
        // Call it "CustomSection2" since the file in this 
        // example already has "CustomSection".
        if (config.Sections["CustomSection"] == null)
        {
            customSection = new CustomSection();
            config.Sections.Add("CustomSection2", customSection);
            customSection.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Full);
        }
    }
    catch (ConfigurationErrorsException err)
    {
        Console.WriteLine(err.ToString());
    }
}
' 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>.
        ' Since the config file already has "CustomSection",
        ' call this one "CustomSection2".
        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

Комментарии

В случае простого ConfigurationElement , например, CustomSection показанного в следующем примере, ConfigurationProperty объекты представляют атрибуты, такие как fileName .

В случае более сложных элементов конфигурации, таких как раздел, содержащий подразделы, authentication ConfigurationProperty объекты могут представлять ConfigurationElement объекты и атрибуты.

ConfigurationPropertyCollectionКласс представляет коллекцию ConfigurationProperty объектов, которые могут быть либо атрибутами, либо ConfigurationElement объектами элемента конфигурации.

ConfigurationPropertyКласс представляет отдельный параметр конфигурации. Этот класс позволяет получить или задать имя, тип и значение по умолчанию для конкретной сущности конфигурации (атрибут или элемент) и указать, является ли атрибут обязательным, является ключом элемента или представляет коллекцию элементов по умолчанию.

Примечания для тех, кто наследует этот метод

Каждый ConfigurationElement объект создает внутреннюю ConfigurationPropertyCollection коллекцию ConfigurationProperty объектов, представляющих либо атрибуты элемента, либо коллекцию дочерних элементов.

Ненастраиваемые сведения и функциональные возможности содержатся в ElementInformation объекте, предоставленном ElementInformation свойством.

Для создания настраиваемого элемента конфигурации можно использовать программную или декларативную модель кодирования (с атрибутами).

— Программная модель. Для этой модели необходимо создать свойство для каждого атрибута элемента, чтобы получить и/или задать его значение и добавить его в внутренний контейнер свойств базового ConfigurationElement базового класса.

— Декларативная модель. Эта упрощенная модель, также называемая моделью с атрибутами, позволяет определить атрибут элемента с помощью свойства и снабдить его атрибутами. эти атрибуты указывают системе конфигурации ASP.NET о типах свойств и их значениях по умолчанию. с помощью этой информации, полученной с помощью отражения, система конфигурации ASP.NET создает объекты свойств элементов и выполняет необходимую инициализацию.

Конструкторы

ConfigurationProperty(String, Type)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Инициализирует новый экземпляр класса ConfigurationProperty.

ConfigurationProperty(String, Type, Object)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Инициализирует новый экземпляр класса ConfigurationProperty.

ConfigurationProperty(String, Type, Object, ConfigurationPropertyOptions)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Инициализирует новый экземпляр класса ConfigurationProperty.

ConfigurationProperty(String, Type, Object, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Инициализирует новый экземпляр класса ConfigurationProperty.

ConfigurationProperty(String, Type, Object, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions, String)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Инициализирует новый экземпляр класса ConfigurationProperty.

Свойства

Converter

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает объект TypeConverter, используемый для преобразования указанного ConfigurationProperty в XML-представление для записи в файл конфигурации.

DefaultValue

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает значение по умолчанию для указанного свойства ConfigurationProperty.

Description

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает описание, связанное с объектом ConfigurationProperty.

IsAssemblyStringTransformationRequired

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Указывает, требуется ли преобразование имени сборки для свойства конфигурации при сериализации для более ранней версии .NET Framework.

IsDefaultCollection

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает значение, указывающее, является ли свойство коллекцией по умолчанию для элемента.

IsKey

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает значение, указывающее, является ли ConfigurationProperty ключом для содержащего объекта ConfigurationElement.

IsRequired

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает значение, указывающее, требуется ли ConfigurationProperty.

IsTypeStringTransformationRequired

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Указывает, требуется ли преобразование имени типа для свойства конфигурации при сериализации для более ранней версии .NET Framework.

IsVersionCheckRequired

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Указывает, запрашивается ли во время сериализации родительский раздел конфигурации свойства конфигурации, чтобы определить, нужно ли выполнять сериализацию свойства конфигурации в формат XML.

Name

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает имя этого аспекта ConfigurationProperty.

Type

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает тип этого объекта ConfigurationProperty.

Validator

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает ConfigurationValidatorAttribute, используемый для проверки этого объекта ConfigurationProperty.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел