ConfigurationProperty Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет атрибут или дочерний элемент конфигурации. Этот класс не наследуется.
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.
public ref class ConfigurationProperty sealed
public sealed class ConfigurationProperty
type ConfigurationProperty = class
Public NotInheritable Class ConfigurationProperty
- Наследование
-
ConfigurationProperty
Примеры
- В следующем примере кода показано, как использовать 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) |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |