Condividi tramite


EnumerableComCollection<TComEnumerator,TEnumerated> Classe

Definizione

Classe di base generica per i tipi che forniscono un wrapper IEnumerable intorno alle interfacce IEnumXXX di tipo 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)

Parametri di tipo

TComEnumerator

Tipo di enumeratore COM (ad esempio IEnumString)

TEnumerated

Tipo enumerato da TComEnumerator (ad esempio stringa)

Ereditarietà
EnumerableComCollection<TComEnumerator,TEnumerated>
Derivato
Implementazioni

Commenti

Le classi che derivano da questa classe adattano un'interfaccia IEnumXXX di tipo COM in un modulo che può essere elaborato da un'istruzione foreach. Idealmente, questa classe generica sarebbe sufficiente da sola senza la necessità di una classe derivata per eseguire il processo, ma il rigore con cui devono essere definiti generics C# impedisce tale operazione.

Questa classe deve chiamare metodi nell'enumeratore COM di cui esegue il wrapping (Next, Skip e così via), ma i tipi generici possono accedere solo alle proprietà e ai metodi sui tipi con parametri specificati nei vincoli dei tipi con parametri. In particolare, è possibile chiamare TComEnumerator.Next solo se si specifica un vincolo in TComEnumerator che indica al compilatore che TComEnumerator implementa Next.

Le interfacce IEnumXXX COM sono fortemente tipizzate (ad esempio IEnumXXX.Next restituisce una matrice di oggetti XXX) e non hanno una classe base comune, quindi non è possibile inserire direttamente un vincolo su TComEnumerator. In questo caso viene fornito IComEnumeratorRelay: EnumerableComCollection richiede che la classe derivata implementi l'interfaccia IComEnumeratorRelay fortemente tipizzata che consente al tipo generico di chiamare nell'enumeratore COM senza dover inserire un vincolo su TComEnumerator.

Costruttori

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator)

Inizializza una nuova istanza dell'oggetto EnumerableComCollection<TComEnumerator,TEnumerated> per l'enumeratore fornito.

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator, Int32)

Inizializza una nuova istanza dell'oggetto EnumerableComCollection<TComEnumerator,TEnumerated> per l'enumeratore e le dimensioni della cache forniti.

Campi

DefaultCacheSize

La dimensione predefinita della cache.

Metodi

Clone(TComEnumerator, TComEnumerator)

Clona l'elemento con l'enumeratore specificato.

GetEnumerator()

Ottiene l'enumeratore.

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

Ottiene il numero specificato di elementi.

Reset(TComEnumerator)

Reimposta il contatore della raccolta.

Skip(TComEnumerator, UInt32)

Ignora il numero specificato di elementi.

Implementazioni dell'interfaccia esplicita

IEnumerable.GetEnumerator()

Ottiene l'enumeratore.

Metodi di estensione

EmptyIfNull<T>(IEnumerable<T>)

Restituisce questa enumerazione nel caso in cui non sia Null. Nel caso in cui sia null restituisce un'enumerazione vuota.

Si applica a