Auf Englisch lesen

Teilen über


ComponentCollection Klasse

Definition

Stellt einen schreibgeschützten Container für eine Auflistung von IComponent-Objekten bereit.

C#
public class ComponentCollection : System.Collections.ReadOnlyCollectionBase
C#
public class ComponentCollection
C#
[System.Runtime.InteropServices.ComVisible(true)]
public class ComponentCollection : System.Collections.ReadOnlyCollectionBase
Vererbung
ComponentCollection
Vererbung
ComponentCollection
Attribute

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Eine zum Auflisten einer Auflistung benutzerdefinierter BookComponent Objekte verwendet ComponentCollection wird.

C#
//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 ArgumentException("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 (ArgumentException e)
        {
            Console.WriteLine("Unable to add books: " + 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);
        }
    }
}

Hinweise

Diese Auflistung erbt von ReadOnlyCollectionBase. Die einzige Möglichkeit zum Hinzufügen IComponent von Objekten zu dieser Auflistung besteht darin, den Klassenkonstruktor zu verwenden.

Diese Auflistung stellt zwei Indexereigenschaften bereit, einen Zeichenfolgenindexer und einen Ganzzahlindexer. Die Zeichenfolgenindexer-Eigenschaft gibt eine Komponente in der Auflistung nach Namen zurück, wenn die Site Eigenschaft einer Komponente in der Auflistung nicht null ist und die Name Eigenschaft der Site -Eigenschaft der Komponente mit der angegebenen Zeichenfolge übereinstimmt. Die ganzzahlige Indexer-Eigenschaft gibt den IComponent am angegebenen Auflistungsindex zurück. Die CopyTo -Methode kopiert den Inhalt der Auflistung in ein angegebenes Array und beginnt mit dem Schreiben in das Array am angegebenen Index.

Konstruktoren

ComponentCollection(IComponent[])

Initialisiert eine neue Instanz der ComponentCollection-Klasse unter Verwendung des angegebenen Arrays von Komponenten.

Eigenschaften

Count

Ruft die Anzahl der in der ReadOnlyCollectionBase-Instanz enthaltenen Elemente ab.

(Geerbt von ReadOnlyCollectionBase)
InnerList

Ruft die Liste der in der ReadOnlyCollectionBase-Instanz enthaltenen Elemente ab.

(Geerbt von ReadOnlyCollectionBase)
Item[Int32]

Ruft die Component in der Auflistung am angegebenen Auflistungsindex ab.

Item[String]

Ruft jede Komponente in der Auflistung ab, die mit dem angegebenen Namen übereinstimmt.

Methoden

CopyTo(IComponent[], Int32)

Kopiert die gesamte Auflistung in ein Array, wobei mit dem Schreibvorgang am angegebenen Arrayindex begonnen wird.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetEnumerator()

Gibt einen Enumerator zurück, der die ReadOnlyCollectionBase durchläuft.

(Geerbt von ReadOnlyCollectionBase)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

ICollection.CopyTo(Array, Int32)

Kopiert die gesamte ReadOnlyCollectionBase-Instanz in ein kompatibles eindimensionales Array, beginnend am angegebenen Index des Zielarrays.

(Geerbt von ReadOnlyCollectionBase)
ICollection.IsSynchronized

Ruft einen Wert ab, der angibt, ob der Zugriff auf ein ReadOnlyCollectionBase-Objekt synchronisiert (threadsicher) ist.

(Geerbt von ReadOnlyCollectionBase)
ICollection.SyncRoot

Ruft ein Objekt ab, mit dem der Zugriff auf ein ReadOnlyCollectionBase-Objekt synchronisiert werden kann.

(Geerbt von ReadOnlyCollectionBase)

Erweiterungsmethoden

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um

OfType<TResult>(IEnumerable)

Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs

AsParallel(IEnumerable)

Ermöglicht die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Konvertiert einen IEnumerable in einen IQueryable.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Weitere Informationen