Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

ComponentCollection Constructor (array<IComponent^>^)

 

Initializes a new instance of the ComponentCollection class using the specified array of components.

Namespace:   System.ComponentModel
Assembly:  System (in System.dll)

public:
ComponentCollection(
	array<IComponent^>^ components
)

Parameters

components
Type: array<System.ComponentModel::IComponent^>^

An array of IComponent objects to initialize the collection with.

This method adds each IComponent in the specified IComponent array to the collection.

The following code example demonstrates how to create a ComponentCollection from an array of BookComponent objects.

 //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.
 ref class LibraryContainer: public IContainer
 {
 private:
    ArrayList^ m_bookList;

 public:
    LibraryContainer()
    {
       m_bookList = gcnew ArrayList;
    }

    virtual void Add( IComponent^ book )
    {

       //The book will be added without creation of the ISite object.
       m_bookList->Add( book );
    }

    virtual void Add( IComponent^ book, String^ ISNDNNum )
    {
       for ( int i = 0; i < m_bookList->Count; ++i )
       {
          IComponent^ curObj = static_cast<IComponent^>(m_bookList->default[ i ]);
          if ( curObj->Site != nullptr )
          {
             if ( curObj->Site->Name->Equals( ISNDNNum ) )
                            throw gcnew SystemException( "The ISBN number already exists in the container" );
          }

       }
       ISBNSite^ data = gcnew ISBNSite( this,book );
       data->Name = ISNDNNum;
       book->Site = data;
       m_bookList->Add( book );
    }

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

       }
    }


    property ComponentCollection^ Components 
    {
       virtual ComponentCollection^ get() 
       {
          array<IComponent^>^datalist = gcnew array<BookComponent^>(m_bookList->Count);
          m_bookList->CopyTo( datalist );
          return gcnew ComponentCollection( datalist );
       }

    }

    ~LibraryContainer()
    {
       for ( int i = 0; i < m_bookList->Count; ++i )
       {
          IComponent^ curObj = static_cast<IComponent^>(m_bookList->default[ i ]);
          delete curObj;

       }
       m_bookList->Clear();
    }



 };



 [STAThreadAttribute]
 int main()
    {
       LibraryContainer^ cntrExmpl = gcnew LibraryContainer;
       try
       {
          BookComponent^ book1 = gcnew BookComponent( "Wizard's First Rule","Terry Gooodkind" );
          cntrExmpl->Add( book1, "0812548051" );
          BookComponent^ book2 = gcnew BookComponent( "Stone of Tears","Terry Gooodkind" );
          cntrExmpl->Add( book2, "0812548094" );
          BookComponent^ book3 = gcnew BookComponent( "Blood of the Fold","Terry Gooodkind" );
          cntrExmpl->Add( book3, "0812551478" );
          BookComponent^ book4 = gcnew 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: {0}", e->Message );
       }

       ComponentCollection^ datalist = cntrExmpl->Components;
       IEnumerator^ denum = datalist->GetEnumerator();
       while ( denum->MoveNext() )
       {
          BookComponent^ cmp = static_cast<BookComponent^>(denum->Current);
          Console::WriteLine( "Book Title: {0}", cmp->Title );
          Console::WriteLine(  "Book Author: {0}", cmp->Author );
          Console::WriteLine(  "Book ISBN: {0}", cmp->Site->Name );
       }

return 0;
    }

.NET Framework
Available since 1.1
Return to top
Show:
© 2017 Microsoft