EnumerableComCollection<TComEnumerator,TEnumerated> Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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. |