EnumerableComCollection<TComEnumerator,TEnumerated> Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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. |