EnumerableComCollection<TComEnumerator,TEnumerated> Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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. |