Freigeben über


EnumerableComCollection<TComEnumerator,TEnumerated> Klasse

Definition

Generische Basisklasse für Typen, die einen IEnumerable-Wrapper um IEnumXXX-Schnittstellen im COM-Stil bereitstellen.

generic <typename TComEnumerator, typename TEnumerated>
public ref class EnumerableComCollection abstract : Microsoft::VisualStudio::Shell::IComEnumeratorRelay<TComEnumerator, TEnumerated>, System::Collections::Generic::IEnumerable<TEnumerated>
public abstract class EnumerableComCollection<TComEnumerator,TEnumerated> : Microsoft.VisualStudio.Shell.IComEnumeratorRelay<TComEnumerator,TEnumerated>, System.Collections.Generic.IEnumerable<TEnumerated>
type EnumerableComCollection<'ComEnumerator, 'Enumerated> = class
    interface seq<'Enumerated>
    interface IEnumerable
    interface IComEnumeratorRelay<'ComEnumerator, 'Enumerated>
Public MustInherit Class EnumerableComCollection(Of TComEnumerator, TEnumerated)
Implements IComEnumeratorRelay(Of TComEnumerator, TEnumerated), IEnumerable(Of TEnumerated)

Typparameter

TComEnumerator

COM-Enumeratortyp (z. B. IEnumString)

TEnumerated

Type enumerated by TComEnumerator (z. B. string)

Vererbung
EnumerableComCollection<TComEnumerator,TEnumerated>
Abgeleitet
Implementiert

Hinweise

Von dieser Klasse abgeleitete Klassen passen eine IEnumXXX-Schnittstelle im COM-Stil in ein Formular an, das von einer foreach-Anweisung verarbeitet werden kann. Im Idealfall wäre diese generische Klasse für sich allein ausreichend, ohne dass eine abgeleitete Klasse für die Aufgabe erforderlich ist, aber die Strenge, mit der C#-Generics definiert werden müssen, verhindert dies.

Diese Klasse muss Methoden für den COM-Enumerator aufrufen, den sie umschließt (Weiter, Überspringen usw.), aber generische Typen können nur auf Eigenschaften und Methoden für ihre parametrisierten Typen zugreifen, die in den Einschränkungen der parametrisierten Typen angegeben sind. Insbesondere können wir TComEnumerator.Next nur aufrufen, wenn wir eine Einschränkung für TComEnumerator angeben, die dem Compiler mitteilt, dass TComEnumerator Next implementiert.

COM-IEnumXXX-Schnittstellen sind stark typisiert (d. h. IEnumXXX.Next gibt ein Array von XXX-Objekten zurück) und verfügen nicht über eine gemeinsame Basisklasse, sodass wir TComEnumerator nicht direkt eine Einschränkung festlegen können. Hier kommt IComEnumeratorRelay ins Ziel: EnumerableComCollection erfordert, dass seine abgeleitete Klasse die stark typisierte IComEnumeratorRelay-Schnittstelle implementiert, die es dem generischen Typ ermöglicht, den COM-Enumerator aufzurufen, ohne TComEnumerator eine Einschränkung setzen zu müssen.

Konstruktoren

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator)

Initialisiert eine neue Instanz von EnumerableComCollection<TComEnumerator,TEnumerated> für den angegebenen Enumerator.

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator, Int32)

Initialisiert eine neue Instanz von EnumerableComCollection<TComEnumerator,TEnumerated> für den bereitgestellten Enumerator und die Cachegröße.

Felder

DefaultCacheSize

Die Standardcachegröße.

Methoden

Clone(TComEnumerator, TComEnumerator)

Klont das Element mit dem angegebenen Enumerator .

GetEnumerator()

Ruft den Enumerator ab.

NextItems(TComEnumerator, UInt32, TEnumerated[], UInt32)

Ruft die angegebene Anzahl an Elementen ab.

Reset(TComEnumerator)

Setzt den Indikator der Auflistung zurück.

Skip(TComEnumerator, UInt32)

Überspringt die angegebene Anzahl von Elementen.

Explizite Schnittstellenimplementierungen

IEnumerable.GetEnumerator()

Ruft den Enumerator ab.

Erweiterungsmethoden

EmptyIfNull<T>(IEnumerable<T>)

Gibt diese Enumeration zurück, falls sie nicht NULL ist. Wenn es NULL ist, geben Sie eine leere Enumeration zurück.

Gilt für: