Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase ConfigurationPropertyAttribute

 

Publicado: octubre de 2016

Mediante declaración, indica a .NET Framework para crear instancias de una propiedad de configuración. Esta clase no puede heredarse.

Espacio de nombres:   System.Configuration
Ensamblado:  System.Configuration (en System.Configuration.dll)

System.Object
  System.Attribute
    System.Configuration.ConfigurationPropertyAttribute

[AttributeUsageAttribute(AttributeTargets.Property)]
public sealed class ConfigurationPropertyAttribute : Attribute

NombreDescripción
System_CAPS_pubmethodConfigurationPropertyAttribute(String)

Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Inicializa una nueva instancia de la clase ConfigurationPropertyAttribute.

NombreDescripción
System_CAPS_pubpropertyDefaultValue

Obtiene o establece el valor predeterminado de la propiedad decorada.

System_CAPS_pubpropertyIsDefaultCollection

Obtiene o establece un valor que indica si se trata de la colección de propiedades predeterminado para la propiedad de configuración representativa.

System_CAPS_pubpropertyIsKey

Obtiene o establece un valor que indica si se trata de una propiedad de clave para la propiedad representativa de elemento.

System_CAPS_pubpropertyIsRequired

Obtiene o establece un valor que indica si se requiere la propiedad representativa de elemento.

System_CAPS_pubpropertyName

Obtiene el nombre de la propiedad representativa del elemento de configuración.

System_CAPS_pubpropertyOptions

Obtiene o establece la ConfigurationPropertyOptions para la propiedad representativa del elemento de configuración.

System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute).

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.(Heredado de Attribute).

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute).

Usa el ConfigurationPropertyAttribute para decorar una propiedad de configuración, que indicará a .NET Framework que cree instancias e inicialice la propiedad utilizando el valor del parámetro de decoración.

System_CAPS_noteNota

La manera más sencilla de crear un elemento de configuración personalizado es utilizar el modelo con atributos (declarativo). Se declaran las propiedades públicas personalizadas y se decoran con el ConfigurationPropertyAttribute atributo. Para cada propiedad marcada con este atributo, .NET Framework utiliza la reflexión para leer los parámetros representativos y crear una relacionados ConfigurationProperty instancia. También puede usar el modelo de programación, en cuyo caso es su responsabilidad declarar las propiedades públicas personalizadas y devolver su colección.

El sistema de configuración de .NET Framework proporciona tipos de atributos que puede utilizar durante la creación de elementos de configuración personalizados. Hay dos tipos de atributo:

  1. Los tipos que indican a .NET Framework cómo crear instancias de las propiedades del elemento de configuración personalizado. Estos tipos se incluyen:

  2. Los tipos que indican a .NET Framework cómo validar las propiedades de elementos de configuración personalizados. Estos tipos se incluyen:

En el ejemplo siguiente se muestra cómo definir las propiedades de un personalizado ConfigurationSection objeto mediante el ConfigurationPropertyAttribute atributo.

El ejemplo contiene dos clases. La UrlsSection clase personalizada utiliza el ConfigurationPropertyAttribute para definir sus propias propiedades. La UsingConfigurationPropertyAttribute clase utiliza el UrlsSection para leer y escribir la sección personalizada en el archivo de configuración de la aplicación.

using System;
using System.Configuration;


// Define a custom section.
// This class shows how to use the ConfigurationPropertyAttribute.
public class UrlsSection : ConfigurationSection
{
    [ConfigurationProperty("name", DefaultValue = "Contoso",
        IsRequired = true, IsKey = true)]
    public string Name
    {
        get
        {
            return (string)this["name"];
        }
        set
        {
            this["name"] = value;
        }
    }

    [ConfigurationProperty("url", DefaultValue = "http://www.contoso.com",
        IsRequired = true)]
    [RegexStringValidator(@"\w+:\/\/[\w.]+\S*")]
    public string Url
    {
        get
        {
            return (string)this["url"];
        }
        set
        {
            this["url"] = value;
        }
    }

    [ConfigurationProperty("port", DefaultValue = (int)0, IsRequired = false)]
    [IntegerValidator(MinValue = 0, MaxValue = 8080, ExcludeRange = false)]
    public int Port
    {
        get
        {
            return (int)this["port"];
        }
        set
        {
            this["port"] = value;
        }
    }
}
using System;
using System.Configuration;

public class UsingConfigurationPropertyAttribute
{

    // Create a custom section and save it in the 
    // application configuration file.
    static void CreateCustomSection()
    {
        try
        {

            // Create a custom configuration section.
            UrlsSection customSection = new UrlsSection();

            // Get the current configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None);

            // Add the custom section to the application
            // configuration file.
            if (config.Sections["CustomSection"] == null)
            {
                config.Sections.Add("CustomSection", customSection);
            }


            // Save the application configuration file.
            customSection.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Modified);

            Console.WriteLine("Created custom section in the application configuration file: {0}",
                config.FilePath);
            Console.WriteLine();

        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("CreateCustomSection: {0}", err.ToString());
        }

    }

    static void ReadCustomSection()
    {
        try
        {
            // Get the application configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            // Read and display the custom section.
            UrlsSection customSection =
                config.GetSection("CustomSection") as UrlsSection;
            Console.WriteLine("Reading custom section from the configuration file.");
            Console.WriteLine("Section name: {0}", customSection.Name);
            Console.WriteLine("Url: {0}", customSection.Url);
            Console.WriteLine("Port: {0}", customSection.Port);
            Console.WriteLine();
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("ReadCustomSection(string): {0}", err.ToString());
        }

    }

    static void Main(string[] args)
    {

        // Get the name of the application.
        string appName =
            Environment.GetCommandLineArgs()[0];

        // Create a custom section and save it in the 
        // application configuration file.
        CreateCustomSection();

        // Read the custom section saved in the
        // application configuration file.
        ReadCustomSection();

        Console.WriteLine("Press enter to exit.");

        Console.ReadLine();
    }
}

El siguiente es un extracto del archivo de configuración que contiene la sección personalizada tal como se define en el ejemplo anterior.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="CustomSection" type="UrlsSection, UsingConfigurationPropertyAttribute, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </configSections>
    <CustomSection name="Contoso" url="http://www.contoso.com" />
</configuration>

.NET Framework
Disponible desde 2.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: