¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ConfigurationCollectionAttribute (Clase)

Mediante declaración, le indica a .NET Framework que cree una instancia de una colección de elementos de configuración. Esta clase no puede heredarse.

System.Object
  System.Attribute
    System.Configuration.ConfigurationCollectionAttribute

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

[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Property)]
public sealed class ConfigurationCollectionAttribute : Attribute

El tipo ConfigurationCollectionAttribute expone los siguientes miembros.

  NombreDescripción
Método públicoConfigurationCollectionAttributeInicializa una nueva instancia de la clase ConfigurationCollectionAttribute.
Arriba

  NombreDescripción
Propiedad públicaAddItemNameObtiene o establece el nombre del elemento de configuración <add>.
Propiedad públicaClearItemsNameObtiene o establece el nombre del elemento de configuración <clear>.
Propiedad públicaCollectionTypeObtiene o establece el tipo del atributo ConfigurationCollectionAttribute.
Propiedad públicaItemTypeObtiene el tipo del elemento de colección.
Propiedad públicaRemoveItemNameObtiene o establece el nombre del elemento de configuración <remove>.
Propiedad públicaTypeIdCuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Se hereda de Attribute).
Arriba

  NombreDescripción
Método públicoEqualsInfraestructura. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Se hereda de Attribute).
Método públicoGetHashCodeDevuelve el código hash de esta instancia. (Se hereda de Attribute).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoIsDefaultAttributeCuando se invalida en una clase derivada, indica si el valor de esta instancia es el valor predeterminado para la clase derivada. (Se hereda de Attribute).
Método públicoMatch Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Se hereda de Attribute).
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

  NombreDescripción
Implementación explícita de interfacesMétodo privado_Attribute.GetIDsOfNamesAsigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.GetTypeInfoObtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.GetTypeInfoCount

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

(Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.InvokeProporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de Attribute).
Arriba

El atributo ConfigurationCollectionAttribute se utiliza para decorar un elemento ConfigurationElementCollection. De esta forma, le indica a .NET Framework que cree una instancia de la colección y que la inicialice mediante los valores ConfigurationElement personalizados.

NotaNota

La manera más sencilla de crear un elemento de configuración personalizado es utilizar el modelo con atributos (declarativo). Se declaran los elementos y se decoran con el atributo ConfigurationCollectionAttribute. Para cada elemento marcado con este atributo, .NET Framework utiliza la reflexión para leer los parámetros representativos y crear una instancia de ConfigurationElementCollection relacionada. También puede utilizar el modelo de programación. En este caso, el usuario será el responsable de declarar la colección pública personalizada, así como de reemplazar el miembro de ConfigurationElementCollection y devolver la colección de propiedades.

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

En el ejemplo siguiente, se muestra la forma de utilizar el constructor ConfigurationCollectionAttribute.

Este ejemplo está compuesto de tres clases: UrlsSection, UrlsCollection y UrlConfigElement. La clase UrlsSection utiliza ConfigurationCollectionAttribute para definir una sección de configuración personalizada. Esta sección contiene una colección de direcciones URL (definida por la clase UrlConfigElement) de elementos de dirección URL (definidos por la clase UrlsCollection ). Al ejecutar el ejemplo, se crea una instancia de la clase UrlsSection y los siguientes elementos de configuración se generan en el archivo de configuración de la aplicación:

<configuration>
    <configSections>
        <section name="MyUrls" type="UrlsSection, 
          ConfigurationCollectionAttribute, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </configSections>
    <MyUrls>
        <urls>
            <remove name="Contoso" />
            <add name="Contoso" url="http://www.contoso.com" port="0" />
        </urls>
    </MyUrls>
</configuration


Imports System
Imports System.Configuration




' Define a custom section that contains a custom
' UrlsCollection collection of custom UrlConfigElement elements.
' This class shows how to use the ConfigurationCollectionAttribute.
Public Class UrlsSection
	Inherits ConfigurationSection
    ' Declare the Urls collection property using the
    ' ConfigurationCollectionAttribute.
    ' This allows to build a nested section that contains
    ' a collection of elements.
    <ConfigurationProperty("urls", IsDefaultCollection:=False),
        System.Configuration.ConfigurationCollection(GetType(UrlsCollection),
        AddItemName:="add", ClearItemsName:="clear", RemoveItemName:="remove")> _
    Public ReadOnly Property Urls() As UrlsCollection
        Get
            Dim urlsCollection As UrlsCollection = CType(MyBase.Item("urls"), UrlsCollection)
            Return urlsCollection
        End Get
    End Property

End Class

' Define the custom UrlsCollection that contains the 
' custom UrlsConfigElement elements.
Public Class UrlsCollection
    Inherits ConfigurationElementCollection
    Public Sub New()
        Dim url As UrlConfigElement = CType(CreateNewElement(), UrlConfigElement)
        Add(url)
    End Sub

    Public Overrides ReadOnly Property CollectionType() As ConfigurationElementCollectionType
        Get
            Return ConfigurationElementCollectionType.AddRemoveClearMap
        End Get
    End Property

    Protected Overloads Overrides Function CreateNewElement() As ConfigurationElement
        Return New UrlConfigElement()
    End Function

    Protected Overrides Function GetElementKey(ByVal element As ConfigurationElement) As Object
        Return (CType(element, UrlConfigElement)).Name
    End Function

    Default Shadows Property Item(ByVal index As Integer) As UrlConfigElement
        Get
            Return CType(BaseGet(index), UrlConfigElement)
        End Get
        Set(ByVal value As UrlConfigElement)
            If BaseGet(index) IsNot Nothing Then
                BaseRemoveAt(index)
            End If
            BaseAdd(index, value)
        End Set
    End Property

    Default Public Shadows ReadOnly Property Item(ByVal Name As String) As UrlConfigElement
        Get
            Return CType(BaseGet(Name), UrlConfigElement)
        End Get
    End Property

    Public Function IndexOf(ByVal url As UrlConfigElement) As Integer
        Return BaseIndexOf(url)
    End Function

    Public Sub Add(ByVal url As UrlConfigElement)
        BaseAdd(url)
    End Sub
    Protected Overloads Overrides Sub BaseAdd(ByVal element As ConfigurationElement)
        BaseAdd(element, False)
    End Sub

    Public Sub Remove(ByVal url As UrlConfigElement)
        If BaseIndexOf(url) >= 0 Then
            BaseRemove(url.Name)
        End If
    End Sub

    Public Sub RemoveAt(ByVal index As Integer)
        BaseRemoveAt(index)
    End Sub

    Public Sub Remove(ByVal name As String)
        BaseRemove(name)
    End Sub

    Public Sub Clear()
        BaseClear()
    End Sub
End Class

' Define the custom UrlsConfigElement elements that are contained 
' by the custom UrlsCollection.
Public Class UrlConfigElement
    Inherits ConfigurationElement
    Public Sub New(ByVal name As String, ByVal url As String)
        Me.Name = name
        Me.Url = url
    End Sub

    Public Sub New()
        Me.Name = "Contoso"
        Me.Url = "http://www.contoso.com"
        Me.Port = 0
    End Sub

    <ConfigurationProperty("name", DefaultValue:="Contoso", IsRequired:=True, IsKey:=True)> _
    Public Property Name() As String
        Get
            Return CStr(Me("name"))
        End Get
        Set(ByVal value As String)
            Me("name") = value
        End Set
    End Property

    <ConfigurationProperty("url", DefaultValue:="http://www.contoso.com", IsRequired:=True),
        RegexStringValidator("\w+:\/\/[\w.]+\S*")> _
    Public Property Url() As String
        Get
            Return CStr(Me("url"))
        End Get
        Set(ByVal value As String)
            Me("url") = value
        End Set
    End Property

    <ConfigurationProperty("port", DefaultValue:=0, IsRequired:=False),
        IntegerValidator(MinValue:=0, MaxValue:=8080, ExcludeRange:=False)> _
    Public Property Port() As Integer
        Get
            Return CInt(Fix(Me("port")))
        End Get
        Set(ByVal value As Integer)
            Me("port") = value
        End Set
    End Property
End Class





using System;
using System.Configuration;


// Define a custom section that contains a custom
// UrlsCollection collection of custom UrlConfigElement elements.
// This class shows how to use the ConfigurationCollectionAttribute.
public class UrlsSection : ConfigurationSection
{
    // Declare the Urls collection property using the
    // ConfigurationCollectionAttribute.
    // This allows to build a nested section that contains
    // a collection of elements.
    [ConfigurationProperty("urls", IsDefaultCollection = false)]
    [ConfigurationCollection(typeof(UrlsCollection),
        AddItemName = "add",
        ClearItemsName = "clear",
        RemoveItemName = "remove")]
    public UrlsCollection Urls
    {
        get
        {
            UrlsCollection urlsCollection =
                (UrlsCollection)base["urls"];
            return urlsCollection;
        }
    }

}

// Define the custom UrlsCollection that contains the 
// custom UrlsConfigElement elements.
public class UrlsCollection : ConfigurationElementCollection
{
    public UrlsCollection()
    {
        UrlConfigElement url = (UrlConfigElement)CreateNewElement();
        Add(url);
    }

    public override ConfigurationElementCollectionType CollectionType
    {
        get
        {
            return ConfigurationElementCollectionType.AddRemoveClearMap;
        }
    }

    protected override ConfigurationElement CreateNewElement()
    {
        return new UrlConfigElement();
    }

    protected override Object GetElementKey(ConfigurationElement element)
    {
        return ((UrlConfigElement)element).Name;
    }

    public UrlConfigElement this[int index]
    {
        get
        {
            return (UrlConfigElement)BaseGet(index);
        }
        set
        {
            if (BaseGet(index) != null)
            {
                BaseRemoveAt(index);
            }
            BaseAdd(index, value);
        }
    }

    new public UrlConfigElement this[string Name]
    {
        get
        {
            return (UrlConfigElement)BaseGet(Name);
        }
    }

    public int IndexOf(UrlConfigElement url)
    {
        return BaseIndexOf(url);
    }

    public void Add(UrlConfigElement url)
    {
        BaseAdd(url);
    }
    protected override void BaseAdd(ConfigurationElement element)
    {
        BaseAdd(element, false);
    }

    public void Remove(UrlConfigElement url)
    {
        if (BaseIndexOf(url) >= 0)
            BaseRemove(url.Name);
    }

    public void RemoveAt(int index)
    {
        BaseRemoveAt(index);
    }

    public void Remove(string name)
    {
        BaseRemove(name);
    }

    public void Clear()
    {
        BaseClear();
    }
}

// Define the custom UrlsConfigElement elements that are contained 
// by the custom UrlsCollection.
// Notice that you can change the default values to create new default elements.
public class UrlConfigElement : ConfigurationElement
{
    public UrlConfigElement(String name, String url)
    {
        this.Name = name;
        this.Url = url;
    }

    public UrlConfigElement()
    {

        this.Name = "Contoso";
        this.Url = "http://www.contoso.com";
        this.Port = 0;
    }

    [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;
        }
    }
}




Imports System.Configuration


Friend Class UsingConfigurationCollectionAttribute

	' Create a custom section and save it in the 
	' application configuration file.
	Private Shared Sub CreateCustomSection()
		Try

			' Create a custom configuration section.
			Dim myUrlsSection As New UrlsSection()

			' Get the current configuration file.
            Dim config As System.Configuration.Configuration =
                ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

			' Add the custom section to the application
			' configuration file.
			If config.Sections("MyUrls") Is Nothing Then
				config.Sections.Add("MyUrls", myUrlsSection)
			End If


			' Save the application configuration file.
			myUrlsSection.SectionInformation.ForceSave = True
			config.Save(ConfigurationSaveMode.Modified)

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

		Catch err As ConfigurationErrorsException
			Console.WriteLine("CreateCustomSection: {0}", err.ToString())
		End Try

	End Sub

	Private Shared Sub ReadCustomSection()
		Try
			' Get the application configuration file.
			Dim config As System.Configuration.Configuration = TryCast(ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None), Configuration)

			' Read and display the custom section.
			Dim myUrlsSection As UrlsSection = TryCast(ConfigurationManager.GetSection("MyUrls"), UrlsSection)

			If myUrlsSection Is Nothing Then
				Console.WriteLine("Failed to load UrlsSection.")
			Else
				Console.WriteLine("URLs defined in app.config:")
				For i As Integer = 0 To myUrlsSection.Urls.Count - 1
					Console.WriteLine("  Name={0} URL={1} Port={2}", myUrlsSection.Urls(i).Name, myUrlsSection.Urls(i).Url, myUrlsSection.Urls(i).Port)
				Next i
			End If
        Catch err As ConfigurationErrorsException
            Console.WriteLine("ReadCustomSection(string): {0}", err.ToString())
		End Try

	End Sub

	Shared Sub Main(ByVal args() As String)

		' Get the name of the application.
		Dim appName As String = 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()
        Console.WriteLine("Enter any key to exit.")

		Console.ReadLine()
	End Sub
End Class



using System;
using System.Configuration;


class UsingConfigurationCollectionAttribute
{

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

            // Create a custom configuration section.
            UrlsSection myUrlsSection = 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["MyUrls"] == null)
            {
                config.Sections.Add("MyUrls", myUrlsSection);
            }


            // Save the application configuration file.
            myUrlsSection.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 myUrlsSection =
               ConfigurationManager.GetSection("MyUrls") as UrlsSection;

            if (myUrlsSection == null)
                Console.WriteLine("Failed to load UrlsSection.");
            else
            {
                Console.WriteLine("URLs defined in the configuration file:");
                for (int i = 0; i < myUrlsSection.Urls.Count; i++)
                {
                    Console.WriteLine("  Name={0} URL={1} Port={2}",
                        myUrlsSection.Urls[i].Name,
                        myUrlsSection.Urls[i].Url,
                        myUrlsSection.Urls[i].Port);
                }
            }

        }
        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();
        Console.WriteLine("Enter any key to exit.");

        Console.ReadLine();
    }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft