Бөлісу құралы:


ConfigurationSection Класс

Определение

Представляет раздел в файле конфигурации.

public ref class ConfigurationSection abstract : System::Configuration::ConfigurationElement
public abstract class ConfigurationSection : System.Configuration.ConfigurationElement
type ConfigurationSection = class
    inherit ConfigurationElement
Public MustInherit Class ConfigurationSection
Inherits ConfigurationElement
Наследование
ConfigurationSection
Производный

Примеры

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

Полный пример реализации и использования пользовательского раздела, реализованного с помощью модели атрибутов, см. в разделе ConfigurationElement.

// 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;
        }
    }
}
' Define a custom section.
' The CustomSection type allows to define a custom section 
' programmatically.

NotInheritable Public Class CustomSection
   Inherits ConfigurationSection
   ' The collection (property bag) that contains 
   ' the section properties.
   Private Shared _Properties As ConfigurationPropertyCollection
   
   ' Internal flag to disable 
   ' property setting.
   Private Shared _ReadOnly As Boolean
   
   ' The FileName property.
    Private Shared _FileName As New ConfigurationProperty( _
    "fileName", GetType(String), _
    "default.txt", _
    ConfigurationPropertyOptions.IsRequired)
   
   ' The MaxUsers property.
    Private Shared _MaxUsers As New ConfigurationProperty( _
    "maxUsers", GetType(Long), _
    CType(1000, Long), _
    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
   
   
   
   Private Shadows ReadOnly Property IsReadOnly() As Boolean
      Get
         Return _ReadOnly
      End Get
   End Property
   
   
   ' Use this to disable property setting.
   Private Sub ThrowIfReadOnly(propertyName As String)
      If IsReadOnly Then
            Throw New ConfigurationErrorsException( _
            "The property " + propertyName + " is read only.")
      End If
   End Sub
   
   
   
   ' Customizes the use of CustomSection
    ' by setting _ReadOnly to false.
   ' Remember you must use it along with ThrowIfReadOnly.
   Protected Overrides Function GetRuntimeObject() As Object
      ' To enable property setting just assign true to
      ' the following flag.
      _ReadOnly = True
      Return MyBase.GetRuntimeObject()
   End Function 'GetRuntimeObject
   
   
    <StringValidator( _
    InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
    MinLength:=1, MaxLength:=60)> _
    Public Property FileName() As String
        Get
            Return CStr(Me("fileName"))
        End Get
        Set(ByVal value As String)
            ' With this you disable the setting.
            ' Remember that the _ReadOnly flag must
            ' be set to true in the GetRuntimeObject.
            ThrowIfReadOnly("FileName")
            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

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

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
   <configSections>
     <section name="CustomSection" type="Samples.AspNet. CustomSection, CustomConfigurationSection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" />
   </configSections>

   <CustomSection fileName="default.txt" maxUsers="1000" maxIdleTime="00:15:00" />

 </configuration>

Комментарии

Класс используется ConfigurationSection для реализации пользовательского типа раздела. ConfigurationSection Расширьте класс для предоставления пользовательской обработки и программного доступа к пользовательским разделам конфигурации.

Раздел регистрирует тип обработки с записью в элементе configSections . Пример см. в фрагменте файла конфигурации, показанном в разделе "Пример".

Замечание

В предыдущих версиях платформы .NET обработчики разделов конфигурации использовались для программного внесения изменений в параметры конфигурации. Теперь все разделы конфигурации по умолчанию представлены классами, расширяющими ConfigurationSection классы.

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

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

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

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

Класс предоставляет программный Configuration доступ для редактирования файлов конфигурации. Эти файлы можно получить для чтения или записи следующим образом:

  • Чтение. Вы используете GetSection(String) или GetSectionGroup(String) считываете сведения о конфигурации. Обратите внимание, что пользователь или процесс, который считывает, должен иметь следующие разрешения:

    • Разрешение на чтение файла конфигурации на текущем уровне иерархии конфигурации.

    • Разрешения на чтение всех родительских файлов конфигурации.

    Если приложению требуется доступ только для чтения к собственной конфигурации, рекомендуется использовать GetSection перегруженные методы в случае веб-приложений или GetSection(String) метод в случае клиентских приложений.

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

Примечание. Если используется статический GetSection метод, принимаюющий path параметр, path параметр должен ссылаться на приложение, в котором выполняется код. В противном случае параметр игнорируется и возвращается информация о конфигурации для текущего приложения.

  • Письменной форме. Для записи сведений Save о конфигурации используется один из методов. Обратите внимание, что пользователь или процесс записи должен иметь следующие разрешения:

    • Разрешение на запись файла конфигурации и каталога на текущем уровне иерархии конфигурации.

    • Разрешения на чтение всех файлов конфигурации.

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

Имя Описание
ConfigurationSection()

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

Свойства

Имя Описание
CurrentConfiguration

Возвращает ссылку на экземпляр верхнего уровня Configuration , представляющий иерархию конфигурации, к которой принадлежит текущий ConfigurationElement экземпляр.

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

ElementInformation Возвращает объект, содержащий не настраиваемую информацию и функциональные возможности ConfigurationElement объекта.

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

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

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

Возвращает объект ContextInformation для объекта ConfigurationElement.

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

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

(Унаследовано от ConfigurationElement)
Item[ConfigurationProperty]

Возвращает или задает свойство или атрибут этого элемента конфигурации.

(Унаследовано от ConfigurationElement)
Item[String]

Возвращает или задает свойство, атрибут или дочерний элемент этого элемента конфигурации.

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

Возвращает коллекцию заблокированных атрибутов.

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

Возвращает коллекцию заблокированных элементов.

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

Возвращает коллекцию заблокированных атрибутов.

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

Возвращает коллекцию заблокированных элементов.

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

Возвращает или задает значение, указывающее, заблокирован ли элемент.

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

Возвращает коллекцию свойств.

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

SectionInformation Возвращает объект, содержащий не настраиваемую информацию и функциональные возможности ConfigurationSection объекта.

Методы

Имя Описание
DeserializeElement(XmlReader, Boolean)

Считывает XML из файла конфигурации.

(Унаследовано от ConfigurationElement)
DeserializeSection(XmlReader)

Считывает XML из файла конфигурации.

Equals(Object)

Сравнивает текущий ConfigurationElement экземпляр с указанным объектом.

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

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

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

Возвращает пользовательский объект при переопределении в производном классе.

GetTransformedAssemblyString(String)

Возвращает преобразованную версию указанного имени сборки.

(Унаследовано от ConfigurationElement)
GetTransformedTypeString(String)

Возвращает преобразованную версию указанного имени типа.

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

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

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

Задает объект исходному ConfigurationElement состоянию.

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

Используется для инициализации набора значений по умолчанию для ConfigurationElement объекта.

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

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

IsReadOnly()

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

(Унаследовано от ConfigurationElement)
ListErrors(IList)

Добавляет ошибки недопустимого свойства в этом ConfigurationElement объекте и во все подэлементы в переданный список.

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

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

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

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

(Унаследовано от ConfigurationElement)
OnDeserializeUnrecognizedElement(String, XmlReader)

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

(Унаследовано от ConfigurationElement)
OnRequiredPropertyNotFound(String)

Создает исключение, если обязательное свойство не найдено.

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

Вызывается после десериализации.

(Унаследовано от ConfigurationElement)
PreSerialize(XmlWriter)

Вызывается перед сериализацией.

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

Сбрасывает внутреннее состояние ConfigurationElement объекта, включая блокировки и коллекции свойств.

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

Сбрасывает значение IsModified() метода false на момент реализации в производном классе.

SerializeElement(XmlWriter, Boolean)

Записывает содержимое этого элемента конфигурации в файл конфигурации при реализации в производном классе.

(Унаследовано от ConfigurationElement)
SerializeSection(ConfigurationElement, String, ConfigurationSaveMode)

Создает XML-строку, содержащую несоединённое представление ConfigurationSection объекта в виде одного раздела для записи в файл.

SerializeToXmlElement(XmlWriter, String)

Записывает внешние теги этого элемента конфигурации в файл конфигурации при реализации в производном классе.

(Унаследовано от ConfigurationElement)
SetPropertyValue(ConfigurationProperty, Object, Boolean)

Задает свойству указанное значение.

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

IsReadOnly() Задает свойство для ConfigurationElement объекта и всех вложенных элементов.

(Унаследовано от ConfigurationElement)
ShouldSerializeElementInTargetVersion(ConfigurationElement, String, FrameworkName)

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

ShouldSerializePropertyInTargetVersion(ConfigurationProperty, String, FrameworkName, ConfigurationElement)

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

ShouldSerializeSectionInTargetVersion(FrameworkName)

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

ToString()

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

(Унаследовано от Object)
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode)

Изменяет объект для удаления всех значений ConfigurationElement , которые не должны быть сохранены.

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

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

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