EnumerableComCollection<TComEnumerator,TEnumerated> Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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. |