Esta documentación está archivada y no tiene mantenimiento.

ComponentCollection (Clase)

Actualización: noviembre 2007

Proporciona un contenedor de sólo lectura para una colección de objetos IComponent.

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

[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public class ComponentCollection : ReadOnlyCollectionBase
/** @attribute ComVisibleAttribute(true) */
/** @attribute HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true) */
public class ComponentCollection extends ReadOnlyCollectionBase
public class ComponentCollection extends ReadOnlyCollectionBase

wa6fc6zf.alert_note(es-es,VS.90).gifNota:

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de la propiedad Resources: Synchronization. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación de SQL Server y atributos de protección del host.

Esta colección se hereda de ReadOnlyCollectionBase. La única forma de agregar objetos IComponent a esta colección es utilizar el constructor de clases.

Esta colección proporciona dos propiedades de indizador, un indizador de cadenas y un indizador de enteros. La propiedad de indizador de cadenas devuelve un componente de la colección por nombre si la propiedad Site de un componente de la colección no tiene el valor null y la propiedad Name de la propiedad Site del componente coincide con la cadena especificada. La propiedad de indizador de enteros devuelve el objeto IComponent por el índice de colección especificado. El método CopyTo copia el contenido de la colección en una matriz especificada, empezando a escribir por el índice especificado.

En el ejemplo de código siguiente muestra cómo se utiliza ComponentCollection para enumerar una colección de objetos BookComponent personalizados.

	//This code segment implements the IContainer interface.  The code segment 
	//containing the implementation of ISite and IComponent can be found in the documentation
	//for those interfaces.
	
	//Implement the LibraryContainer using the IContainer interface.
	
	class LibraryContainer : IContainer
	{
		private ArrayList m_bookList;

		public LibraryContainer()
		{
			m_bookList = new ArrayList();
		}

		public virtual void Add(IComponent book)
		{
			//The book will be added without creation of the ISite object.
			m_bookList.Add(book);
		}

		public virtual void Add(IComponent book, string ISNDNNum)
		{
			for(int i =0; i < m_bookList.Count; ++i)
			{
				IComponent curObj = (IComponent)m_bookList[i];
				if(curObj.Site != null)
				{
					if(curObj.Site.Name.Equals(ISNDNNum))
						throw new SystemException("The ISBN number already exists in the container"); 
				}
			}

			ISBNSite data = new ISBNSite(this, book);
			data.Name = ISNDNNum;
			book.Site = data;
			m_bookList.Add(book);
		}

		public virtual void Remove(IComponent book)
		{
			for(int i =0; i < m_bookList.Count; ++i)
			{				
				if(book.Equals(m_bookList[i]))
				{
					m_bookList.RemoveAt(i);
						break;
				}
			}
		}

		public ComponentCollection Components
		{
			get
			{
				IComponent[] datalist = new BookComponent[m_bookList.Count];
				m_bookList.CopyTo(datalist);
				return new ComponentCollection(datalist);
			}
		}

		public virtual void Dispose()
		{	
			for(int i =0; i < m_bookList.Count; ++i)
			{
				IComponent curObj = (IComponent)m_bookList[i];
				curObj.Dispose();
			}
			
			m_bookList.Clear();
		}

		static void Main(string[] args)
		{
			LibraryContainer cntrExmpl = new LibraryContainer();

			try
			{
				BookComponent book1 = new BookComponent("Wizard's First Rule", "Terry Gooodkind");
				cntrExmpl.Add(book1, "0812548051");
				BookComponent book2 = new BookComponent("Stone of Tears", "Terry Gooodkind");
				cntrExmpl.Add(book2, "0812548094");
				BookComponent book3 = new BookComponent("Blood of the Fold", "Terry Gooodkind");
				cntrExmpl.Add(book3, "0812551478");
				BookComponent book4 = new BookComponent("The Soul of the Fire", "Terry Gooodkind");
				//This will generate exception because the ISBN already exists in the container.
				cntrExmpl.Add(book4, "0812551478");
			}
			catch(SystemException e)
			{
				Console.WriteLine("Error description: " + e.Message);
			}

			ComponentCollection datalist =cntrExmpl.Components;
			IEnumerator denum = datalist.GetEnumerator();

			while(denum.MoveNext())
			{
				BookComponent cmp = (BookComponent)denum.Current;
				Console.WriteLine("Book Title: " + cmp.Title);
				Console.WriteLine("Book Author: " + cmp.Author);
				Console.WriteLine("Book ISBN: " + cmp.Site.Name);
			}
		}
	}


// This code segment implements the IContainer interface. The code segment 
// containing the implementation of ISite and IComponent can be found in 
// the documentation for those interfaces.
// Implement the LibraryContainer using the IContainer interface.
class LibraryContainer implements IContainer
{
    private ArrayList mBookList;

    public LibraryContainer()
    {
        mBookList = new ArrayList();
    } //LibraryContainer

    public void Add(IComponent book)
    {
        // The book will be added without creation of the ISite object.
        mBookList.Add(book);
    } //Add

    public void Add(IComponent book, String isndNNum) throws SystemException
    {
        for (int i = 0; i < mBookList.get_Count(); ++i) {
            IComponent curObj = (IComponent)mBookList.get_Item(i);
            if (curObj.get_Site() != null) {
                if (curObj.get_Site().get_Name().Equals(isndNNum)) {
                    throw new SystemException(
                        "The ISBN number already exists in the container");
                }
            }
        }
        ISBNSite data = new ISBNSite(this, book);
        data.set_Name(isndNNum);
        book.set_Site(data);
        mBookList.Add(book);
    } //Add

    public void Remove(IComponent book)
    {
        for (int i = 0; i < mBookList.get_Count(); ++i) {
            if (book.Equals(mBookList.get_Item(i))) {
                mBookList.RemoveAt(i);
                break;
            }
        }
    } //Remove

    /** @property 
     */
    public ComponentCollection get_Components()
    {
        IComponent dataList[] = new BookComponent[mBookList.get_Count()];
        mBookList.CopyTo(dataList);
        return new ComponentCollection(dataList);
    } //get_Components

    public void Dispose()
    {
        for (int i = 0; i < mBookList.get_Count(); ++i) {
            IComponent curObj = (IComponent)mBookList.get_Item(i);
            curObj.Dispose();
        }
        mBookList.Clear();
    } //Dispose

    public static void main(String[] args)
    {
        LibraryContainer cntrExmpl = new LibraryContainer();
        try {
            BookComponent book1 = new BookComponent("Wizard's First Rule", 
                "Terry Gooodkind");
            cntrExmpl.Add(book1, "0812548051");
            BookComponent book2 = new BookComponent("Stone of Tears", 
                "Terry Gooodkind");
            cntrExmpl.Add(book2, "0812548094");
            BookComponent book3 = new BookComponent("Blood of the Fold", 
                "Terry Gooodkind");
            cntrExmpl.Add(book3, "0812551478");
            BookComponent book4 = new BookComponent("The Soul of the Fire", 
                "Terry Gooodkind");

            // This will generate exception because the ISBN already exists in 
            // the container.
            cntrExmpl.Add(book4, "0812551478");
        }
        catch (SystemException e) {
            Console.WriteLine("Error description: " + e.get_Message());
        }
        ComponentCollection dataList = cntrExmpl.get_Components();
        IEnumerator denum = dataList.GetEnumerator();

        while (denum.MoveNext()) {
            BookComponent cmp = (BookComponent)denum.get_Current();
            Console.WriteLine("Book Title: " + cmp.get_Title());
            Console.WriteLine("Book Author: " + cmp.get_Author());
            Console.WriteLine("Book ISBN: " + cmp.get_Site().get_Name());
        }
    } //main
} //LibraryContainer


System.Object
  System.Collections.ReadOnlyCollectionBase
    System.ComponentModel.ComponentCollection

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.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0
Mostrar: