Compartir a través de


EnumerableComCollection<TComEnumerator,TEnumerated> Clase

Definición

Clase base genérica para tipos que proporcionan un contenedor IEnumerable alrededor de interfaces IEnumXXX de estilo 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)

Parámetros de tipo

TComEnumerator

Tipo de enumerador COM (por ejemplo, IEnumString)

TEnumerated

Tipo enumerado por TComEnumerator (por ejemplo, cadena)

Herencia
EnumerableComCollection<TComEnumerator,TEnumerated>
Derivado
Implementaciones

Comentarios

Las clases que derivan de esta clase adaptan una interfaz IEnumXXX de estilo COM a un formulario que se puede procesar mediante una instrucción foreach. Lo ideal es que esta clase genérica sea suficiente por sí sola sin necesidad de que una clase derivada realice el trabajo, pero el rigor con el que se deben definir genéricos de C# impide eso.

Esta clase debe llamar a métodos en el enumerador COM que encapsula (Next, Skip, etc.), pero los tipos genéricos solo pueden tener acceso a propiedades y métodos en sus tipos con parámetros especificados en las restricciones de los tipos con parámetros. En concreto, solo podemos llamar a TComEnumerator.Next si especificamos una restricción en TComEnumerator que indica al compilador que TComEnumerator implementa Next.

Las interfaces IEnumXXX COM están fuertemente tipadas (es decir, IEnumXXX.Next devuelve una matriz de objetos XXX) y no tienen una clase base común, por lo que no se puede establecer una restricción en TComEnumerator directamente. Aquí es donde se incluye IComEnumeratorRelay: EnumerableComCollection requiere que su clase derivada implemente la interfaz IComEnumeratorRelay fuertemente tipada que permite que el tipo genérico llame al enumerador COM sin tener que colocar una restricción en TComEnumerator.

Constructores

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator)

Inicializa una nueva instancia de EnumerableComCollection<TComEnumerator,TEnumerated> para el numerador especificado.

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator, Int32)

Inicializa una nueva instancia de EnumerableComCollection<TComEnumerator,TEnumerated> para el enumerador y el tamaño de caché proporcionados.

Campos

DefaultCacheSize

El tamaño de caché predeterminado.

Métodos

Clone(TComEnumerator, TComEnumerator)

Clona el elemento con el enumerador especificado.

GetEnumerator()

Obtiene el enumerador.

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

Obtiene el número especificado de elementos.

Reset(TComEnumerator)

Restablece el contador de la colección.

Skip(TComEnumerator, UInt32)

Omite el número especificado de elementos.

Implementaciones de interfaz explícitas

IEnumerable.GetEnumerator()

Obtiene el enumerador.

Métodos de extensión

EmptyIfNull<T>(IEnumerable<T>)

Devuelve esta enumeración en caso de que no sea null. En caso de que sea null, se devuelve una enumeración vacía.

Se aplica a