Share via


EnumerableComCollection<TComEnumerator,TEnumerated> Třída

Definice

Obecná základní třída pro typy, které poskytují obálku IEnumerable kolem rozhraní IEnumXXX ve stylu COM.

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)

Parametry typu

TComEnumerator

Typ enumerátoru COM (např. IEnumString)

TEnumerated

Typ výčtu podle TComEnumerator (např. řetězec)

Dědičnost
EnumerableComCollection<TComEnumerator,TEnumerated>
Odvozené
Implementuje

Poznámky

Třídy, které jsou odvozeny z této třídy, adaptují rozhraní IEnumXXX ve stylu COM do podoby, která může být zpracována příkazem foreach. V ideálním případě by tato obecná třída byla dostatečná sama o sobě bez potřeby odvozené třídy k provedení této úlohy, ale přísnost, se kterou musí být obecné typy jazyka C# definovány, tomu brání.

Tato třída musí volat metody na enumerátoru COM, který zabalí (Next, Skip atd.), ale obecné typy mohou přistupovat pouze k vlastnostem a metodám na jejich parametrizované typy, které jsou zadány v omezení parametrizovaných typů. Konkrétně můžeme volat pouze TComEnumerator.Next, pokud určíme omezení na TComEnumerator, které kompilátoru řekne, že TComEnumerator implementuje Next.

Rozhraní COM IEnumXXX jsou silného typu (tj. IEnumXXX.Next vrátí pole xxx objektů) a nemají společnou základní třídu, takže nemůžeme umístit omezení přímo na TComEnumerator. To je místo, kde IComEnumeratorRelay přichází v: EnumerableComCollection vyžaduje, aby jeho odvozená třída implementuje rozhraní IComEnumeratorRelay silného typu, který umožňuje obecný typ volat do enumerátoru COM bez nutnosti umístit omezení na TComEnumerator.

Konstruktory

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator)

Inicializuje novou instanci EnumerableComCollection<TComEnumerator,TEnumerated> pro zadaný enumerátor.

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator, Int32)

Inicializuje novou instanci EnumerableComCollection<TComEnumerator,TEnumerated> pro zadaný enumerátor a velikost mezipaměti.

Pole

DefaultCacheSize

Výchozí velikost mezipaměti.

Metody

Clone(TComEnumerator, TComEnumerator)

Klonuje položku se zadaným enumerátorem .

GetEnumerator()

Získá enumerátor.

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

Získá zadaný počet položek.

Reset(TComEnumerator)

Obnoví čítač kolekce.

Skip(TComEnumerator, UInt32)

Přeskočí zadaný počet položek.

Explicitní implementace rozhraní

IEnumerable.GetEnumerator()

Získá enumerátor.

Metody rozšíření

EmptyIfNull<T>(IEnumerable<T>)

Pokud nemá hodnotu null, vraťte tento výčet. V případě, že je null, vraťte prázdný výčet.

Platí pro