Export (0) Print
Expand All

ComponentCollection Class

Provides a read-only container for a collection of IComponent objects.

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

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

'Declaration
<ComVisibleAttribute(True)> _
<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True)> _
Public Class ComponentCollection _
	Inherits ReadOnlyCollectionBase

The ComponentCollection type exposes the following members.

  NameDescription
Public methodComponentCollectionInitializes a new instance of the ComponentCollection class using the specified array of components.
Top

  NameDescription
Public propertyCountGets the number of elements contained in the ReadOnlyCollectionBase instance. (Inherited from ReadOnlyCollectionBase.)
Protected propertyInnerListGets the list of elements contained in the ReadOnlyCollectionBase instance. (Inherited from ReadOnlyCollectionBase.)
Public propertyItem(Int32)Gets the Component in the collection at the specified collection index.
Public propertyItem(String)Gets any component in the collection matching the specified name.
Top

  NameDescription
Public methodCopyToCopies the entire collection to an array, starting writing at the specified array index.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetEnumeratorReturns an enumerator that iterates through the ReadOnlyCollectionBase instance. (Inherited from ReadOnlyCollectionBase.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

  NameDescription
Explicit interface implemetationPrivate methodICollection.CopyToCopies the entire ReadOnlyCollectionBase to a compatible one-dimensional Array, starting at the specified index of the target array. (Inherited from ReadOnlyCollectionBase.)
Explicit interface implemetationPrivate propertyICollection.IsSynchronizedGets a value indicating whether access to a ReadOnlyCollectionBase object is synchronized (thread safe). (Inherited from ReadOnlyCollectionBase.)
Explicit interface implemetationPrivate propertyICollection.SyncRootGets an object that can be used to synchronize access to a ReadOnlyCollectionBase object. (Inherited from ReadOnlyCollectionBase.)
Top

This collection inherits from ReadOnlyCollectionBase. The only way to add IComponent objects to this collection is to use the class constructor.

This collection provides two indexer properties, a string indexer and an integer indexer. The string indexer property returns a component in the collection by name if the Site property of a component in the collection is not Nothing and the Name property of the Site property of the component matches the specified string. The integer indexer property returns the IComponent at the specified collection index. The CopyTo method copies the contents of the collection to a specified array, beginning writing to the array at the specified index.

NoteNote

The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: Synchronization. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes.

The following code example demonstrates how to use a ComponentCollection to enumerate a collection of custom 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. 

Class LibraryContainer
    Implements IContainer
    Private m_bookList As ArrayList

    Public Sub New()
        m_bookList = New ArrayList()
    End Sub 

    Public Sub Add(ByVal book As IComponent) Implements IContainer.Add
        'The book will be added without creation of the ISite object.
        m_bookList.Add(book)
    End Sub 

    Public Sub Add(ByVal book As IComponent, ByVal ISNDNNum As String) Implements IContainer.Add

        Dim i As Integer 
        Dim curObj As IComponent

        For i = 0 To m_bookList.Count - 1
            curObj = CType(m_bookList(i), IComponent)
            If curObj.Site IsNot Nothing Then 
                If (curObj.Site.Name.Equals(ISNDNNum)) Then 
                    Throw New SystemException("The ISBN number already exists in the container")
                End If 
            End If 
        Next i

        Dim data As ISBNSite = New ISBNSite(Me, book)
        data.Name = ISNDNNum
        book.Site = data
        m_bookList.Add(book)

    End Sub 

    Public Sub Remove(ByVal book As IComponent) Implements IContainer.Remove
        Dim i As Integer 
        Dim curComp As BookComponent = CType(book, BookComponent)

        For i = 0 To m_bookList.Count - 1
            If (curComp.Equals(m_bookList(i)) = True) Then
                m_bookList.RemoveAt(i)
                Exit For 
            End If 
        Next i
    End Sub 


    Public ReadOnly Property Components() As ComponentCollection Implements IContainer.Components
        Get 
            Dim datalist(m_bookList.Count - 1) As IComponent

            m_bookList.CopyTo(datalist)
            Return New ComponentCollection(datalist)
        End Get 
    End Property 

    Public Overridable Sub Dispose() Implements IDisposable.Dispose
        Dim i As Integer 
        For i = 0 To m_bookList.Count - 1
            Dim curObj As IComponent = CType(m_bookList(i), IComponent)
            curObj.Dispose()
        Next i

        m_bookList.Clear()
    End Sub 

    Public Shared Sub Main()
        Dim cntrExmpl As LibraryContainer = New LibraryContainer()

        Try 
            Dim book1 As BookComponent = New BookComponent("Wizard's First Rule", "Terry Gooodkind")
            cntrExmpl.Add(book1, "0812548051")
            Dim book2 As BookComponent = New BookComponent("Stone of Tears", "Terry Gooodkind")
            cntrExmpl.Add(book2, "0812548094")
            Dim book3 As BookComponent = New BookComponent("Blood of the Fold", "Terry Gooodkind")
            cntrExmpl.Add(book3, "0812551478")
            Dim book4 As BookComponent = New BookComponent("The Soul of the Fire", "Terry Gooodkind")
            'This will generate an exception, because the ISBN already exists in the container.
            cntrExmpl.Add(book4, "0812551478")
        Catch e As SystemException
            Console.WriteLine("Error description: " + e.Message)
        End Try 

        Dim datalist As ComponentCollection = cntrExmpl.Components
        Dim denum As IEnumerator = datalist.GetEnumerator()

        While (denum.MoveNext())
            Dim cmp As BookComponent = CType(denum.Current, BookComponent)
            Console.WriteLine("Book Title: " + cmp.Title)
            Console.WriteLine("Book Author: " + cmp.Author)
            Console.WriteLine("Book ISBN: " + cmp.Site.Name)
        End While 
    End Sub 
End Class

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

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 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft