Partager via


EnumerableComCollection<TComEnumerator,TEnumerated> Classe

Définition

Classe de base générique pour les types qui fournissent un wrapper IEnumerable autour d’interfaces IEnumXXX de style 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)

Paramètres de type

TComEnumerator

Type d’énumérateur COM (par exemple, IEnumString)

TEnumerated

Type énuméré par TComEnumerator (par exemple, chaîne)

Héritage
EnumerableComCollection<TComEnumerator,TEnumerated>
Dérivé
Implémente

Remarques

Les classes qui dérivent de cette classe adaptent une interface IEnumXXX de style COM dans un formulaire qui peut être traité par une instruction foreach. Dans l’idéal, cette classe générique serait suffisante à elle seule sans avoir besoin d’une classe dérivée pour effectuer le travail, mais la rigueur avec laquelle les génériques C# doivent être définis empêche cela.

Cette classe doit appeler des méthodes sur l’énumérateur COM qu’elle encapsule (Next, Skip, etc.), mais les types génériques ne peuvent accéder qu’aux propriétés et aux méthodes sur leurs types paramétrables qui sont spécifiés dans les contraintes des types paramétrables. Plus précisément, nous ne pouvons appeler TComEnumerator.Next que si nous spécifions une contrainte sur TComEnumerator qui indique au compilateur que TComEnumerator implémente Next.

Les interfaces COM IEnumXXX sont fortement typées (par exemple, IEnumXXX.Next retourne un tableau d’objets XXX) et n’ont pas de classe de base commune. Nous ne pouvons donc pas placer de contrainte directement sur TComEnumerator. C’est là qu’IComEnumeratorRelay entre en jeu : EnumerableComCollection exige que sa classe dérivée implémente l’interface IComEnumeratorRelay fortement typée qui permet au type générique d’appeler dans l’énumérateur COM sans avoir à placer de contrainte sur TComEnumerator.

Constructeurs

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator)

Initialise une nouvelle instance d'EnumerableComCollection<TComEnumerator,TEnumerated> pour l'énumérateur spécifié.

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator, Int32)

Initialise une nouvelle instance de EnumerableComCollection<TComEnumerator,TEnumerated> pour la taille de l'énumérateur et du cache fournis.

Champs

DefaultCacheSize

Taille de cache par défaut.

Méthodes

Clone(TComEnumerator, TComEnumerator)

Clone l’élément avec l’énumérateur spécifié .

GetEnumerator()

Obtient l'énumérateur.

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

Obtient le nombre spécifié d'éléments.

Reset(TComEnumerator)

Réinitialise le compteur de la collection.

Skip(TComEnumerator, UInt32)

Ignore le nombre d'éléments spécifié.

Implémentations d’interfaces explicites

IEnumerable.GetEnumerator()

Obtient l'énumérateur.

Méthodes d’extension

EmptyIfNull<T>(IEnumerable<T>)

Retourne cette énumération au cas où elle n’est pas null. Dans le cas où il est null, retournez l’énumération vide.

S’applique à