EnumerableComCollection<TComEnumerator,TEnumerated> Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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. |