ConfigurationProperty Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un atributo o un elemento secundario de un elemento de configuración. Esta clase no puede heredarse.
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.
public ref class ConfigurationProperty sealed
public sealed class ConfigurationProperty
type ConfigurationProperty = class
Public NotInheritable Class ConfigurationProperty
- Herencia
-
ConfigurationProperty
Ejemplos
- En el ejemplo de código siguiente se muestra cómo usar al ConfigurationProperty crear una sección personalizada.
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
A continuación se muestra un extracto del archivo de configuración usado por el código del ejemplo anterior.
<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>
En el ejemplo siguiente se muestra cómo crear la sección anterior en el código.
// 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
Comentarios
En el caso de un simple ConfigurationElement, como el CustomSection
que se muestra en el ejemplo siguiente, los ConfigurationProperty objetos representan atributos como fileName
.
En el caso de elementos de configuración más complejos, como una sección que contiene subsecciones, por ejemplo authentication
, los ConfigurationProperty objetos pueden representar ConfigurationElement objetos, así como atributos.
La ConfigurationPropertyCollection clase representa la colección de los ConfigurationProperty objetos que pueden ser atributos o ConfigurationElement objetos de un elemento de configuración.
La ConfigurationProperty clase representa un valor de configuración individual. Esta clase permite obtener o establecer el nombre, el tipo y el valor predeterminado de una entidad de configuración determinada (atributo o elemento) y especificar si el atributo es necesario, es una clave de elemento o representa una colección de elementos predeterminada.
Notas a los desarrolladores de herederos
Cada ConfigurationElement objeto crea una colección interna ConfigurationPropertyCollection de ConfigurationProperty objetos que representa los atributos de elemento o una colección de elementos secundarios.
La información y la funcionalidad no personalizables están contenidas en un ElementInformation objeto proporcionado por la ElementInformation propiedad .
Puede usar un modelo de codificación mediante programación o declarativo (con atributos) para crear un elemento de configuración personalizado.
Modelo de programación. Este modelo requiere que cree una propiedad para cada atributo de elemento para obtener o establecer su valor y agregarla al contenedor de propiedades interno de la clase base subyacente ConfigurationElement .
Modelo declarativo. Este modelo más sencillo, también denominado modelo con atributos, permite definir un atributo de elemento mediante una propiedad y decorarlo con atributos. Estos atributos indican al sistema de configuración de ASP.NET sobre los tipos de propiedad y sus valores predeterminados. Con esta información, obtenida a través de la reflexión, el sistema de configuración de ASP.NET crea los objetos de propiedad de elemento automáticamente y realiza la inicialización necesaria.
Constructores
ConfigurationProperty(String, Type) |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Inicializa una nueva instancia de la clase ConfigurationProperty. |
ConfigurationProperty(String, Type, Object) |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Inicializa una nueva instancia de la clase ConfigurationProperty. |
ConfigurationProperty(String, Type, Object, ConfigurationPropertyOptions) |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Inicializa una nueva instancia de la clase ConfigurationProperty. |
ConfigurationProperty(String, Type, Object, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions) |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Inicializa una nueva instancia de la clase ConfigurationProperty. |
ConfigurationProperty(String, Type, Object, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions, String) |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Inicializa una nueva instancia de la clase ConfigurationProperty. |
Propiedades
Converter |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene el objeto TypeConverter que se ha utilizado para convertir este objeto ConfigurationProperty en la representación XML que se escribe en el archivo de configuración. |
DefaultValue |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene el valor predeterminado para esta propiedad ConfigurationProperty. |
Description |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene la descripción asociada al objeto ConfigurationProperty. |
IsAssemblyStringTransformationRequired |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Indica si el nombre de ensamblado para la propiedad de configuración requiere la transformación cuando se serializa para una versión anterior de .NET Framework. |
IsDefaultCollection |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene un valor que indica si la propiedad es la colección predeterminada de un elemento. |
IsKey |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene un valor que indica si este objeto ConfigurationProperty es la clave para el objeto ConfigurationElement contenedor. |
IsRequired |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene un valor que indica si es necesario este objeto ConfigurationProperty. |
IsTypeStringTransformationRequired |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Indica si el nombre de tipo para la propiedad de configuración requiere la transformación cuando se serializa para una versión anterior de .NET Framework. |
IsVersionCheckRequired |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Indica si la sección de configuración principal de la propiedad de configuración se debe consultar en el momento de la serialización para determinar si la propiedad de configuración se debe serializar en XML. |
Name |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene el nombre de ConfigurationProperty. |
Type |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene el tipo de este objeto ConfigurationProperty. |
Validator |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene el validador ConfigurationValidatorAttribute que se utiliza para validar este objeto ConfigurationProperty. |
Métodos
Equals(Object) |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código. Devuelve una cadena que representa el objeto actual. (Heredado de Object) |