Classe EnumerableComCollection<TComEnumerator, TEnumerated>

Fornisce una classe base generica per i tipi che forniscono un wrapper di IEnumerable intorno alle interfacce di tipo COM di IEnumXXX .

Gerarchia di ereditarietà

System.Object
  Microsoft.VisualStudio.Shell.EnumerableComCollection<TComEnumerator, TEnumerated>
    Microsoft.Internal.VisualStudio.PlatformUI.EnumerablePropertiesCollection
    Microsoft.Internal.VisualStudio.PlatformUI.EnumerableVerbsCollection
    Microsoft.VisualStudio.Shell.EnumerableHierarchiesCollection

Spazio dei nomi:  Microsoft.VisualStudio.Shell
Assembly:  Microsoft.VisualStudio.Shell.11.0 (in Microsoft.VisualStudio.Shell.11.0.dll)

Sintassi

'Dichiarazione
Public MustInherit Class EnumerableComCollection(Of TComEnumerator, TEnumerated) _
    Implements IEnumerable(Of TEnumerated), IEnumerable,  _
    IComEnumeratorRelay(Of TComEnumerator, TEnumerated)
public abstract class EnumerableComCollection<TComEnumerator, TEnumerated> : IEnumerable<TEnumerated>, 
    IEnumerable, IComEnumeratorRelay<TComEnumerator, TEnumerated>

Parametri di tipo

  • TComEnumerator
    Un tipo dell'enumeratore COM (ad esempioIEnumString).
  • TEnumerated
    Il tipo dell'enumeratore.

Il tipo EnumerableComCollection<TComEnumerator, TEnumerated> espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo protetto EnumerableComCollection<TComEnumerator, TEnumerated>(TComEnumerator) inizializza una nuova istanza di EnumerableComCollection<TComEnumerator, TEnumerated> per l'enumeratore fornito.
Metodo protetto EnumerableComCollection<TComEnumerator, TEnumerated>(TComEnumerator, Int32) Inizializza una nuova istanza di EnumerableComCollection<TComEnumerator, TEnumerated> per l'enumeratore e la dimensione della cache forniti.

In alto

Metodi

  Nome Descrizione
Metodo pubblico Clone Esegue l'elemento con l'enumeratore specificato.
Metodo pubblico Equals Determina se l'oggetto specificato equivale all'oggetto corrente. (Ereditato da Object)
Metodo protetto Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico GetEnumerator Ottiene enumeratore.
Metodo pubblico GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico NextItems Ottiene il numero specificato di elementi.
Metodo pubblico Reset Reimposta il contatore della raccolta.
Metodo pubblico Skip Ignora il numero specificato di elementi.
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)

In alto

Campi

  Nome Descrizione
Campo protettoMembro statico DefaultCacheSize La dimensione della cache predefinita.

In alto

Implementazioni esplicite dell'interfaccia

  Nome Descrizione
Implementazione esplicita dell'interfacciaMetodo privato IEnumerable.GetEnumerator Ottiene enumeratore.

In alto

Note

Classi che derivano da tale modifica della classe un'interfaccia di tipo COM di IEnumXXX in un formato che può essere elaborato da un'istruzione di foreach .È necessario derivare una classe separata da questa classe base a causa della modalità i generics di c# definito.

Questa classe deve chiamare i metodi chiama sull'enumeratore COM che esegue il wrapping (Next(), Skip(), e così via.), ma i tipi generici possono accedere alle proprietà e i metodi solo su tipi con parametri specificati nei vincoli.Ad esempio, è possibile chiamare TComEnumerator. Next() solo se si specifica un vincolo su TComEnumerator che indica al compilatore che il tipo implementa Next().

Le interfacce COM IEnumXXX sono fortemente tipizzate.Ovvero IEnumXXX. Il metodo di Next() restituisce una matrice di oggetti di XXX .Poiché queste interfacce non dispongono di un'interfaccia comune, non è possibile inserire direttamente un vincolo su TComEnumerator .È possibile risolvere questo problema implementando l'interfaccia di IComEnumeratorRelay<TComEnumerator, TEnumerated> con l'interfaccia di EnumerableComCollection<TComEnumerator, TEnumerated> .Questa operazione consente il tipo generico alla chiamata nell'enumeratore COM senza dover inserire un vincolo su TComEnumerator.

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.Shell