Compartilhar via


EnumerableComCollection<TComEnumerator,TEnumerated> Classe

Definição

Classe base genérica para tipos que fornecem um wrapper IEnumerable em torno de interfaces IEnumXXX no 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 exemplo, IEnumString)

TEnumerated

Tipo enumerado por (por TComEnumerator exemplo, cadeia de caracteres)

Herança
EnumerableComCollection<TComEnumerator,TEnumerated>
Derivado
Implementações

Comentários

Classes derivadas dessa classe adaptam uma interface IEnumXXX no estilo COM em um formulário que pode ser processado por uma instrução foreach. Idealmente, essa classe genérica seria suficiente por conta própria sem a necessidade de uma classe derivada fazer o trabalho, mas o rigor com que os genéricos C# devem ser definidos impede isso.

Essa classe deve chamar métodos no enumerador COM que encapsula (Next, Skip etc.), mas tipos genéricos só podem acessar propriedades e métodos em seus tipos parametrizados especificados nas restrições dos tipos parametrizados. Especificamente, só podemos chamar TComEnumerator.Next se especificarmos uma restrição em TComEnumerator que informa ao compilador que TComEnumerator implementa Next.

As interfaces COM IEnumXXX são fortemente tipados (ou seja, IEnumXXX.Next retorna uma matriz de objetos XXX) e não têm uma classe base comum, portanto, não podemos colocar uma restrição diretamente no TComEnumerator. É aí que entra IComEnumeratorRelay: EnumerableComCollection exige que sua classe derivada implemente a interface IComEnumeratorRelay fortemente tipada, que permite que o tipo genérico chame o enumerador COM sem precisar colocar uma restrição no TComEnumerator.

Construtores

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator)

Inicializa uma nova instância do EnumerableComCollection<TComEnumerator,TEnumerated> para o enumerador fornecido.

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator, Int32)

Inicializa uma nova instância do EnumerableComCollection<TComEnumerator,TEnumerated> para o enumerador e o tamanho do cache fornecidos.

Campos

DefaultCacheSize

O tamanho do cache padrão.

Métodos

Clone(TComEnumerator, TComEnumerator)

Clona o item com o enumerador especificado.

GetEnumerator()

Obtém o enumerador.

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

Obtém o número especificado de itens.

Reset(TComEnumerator)

Redefine o contador da coleção.

Skip(TComEnumerator, UInt32)

Ignora o número especificado de itens.

Implantações explícitas de interface

IEnumerable.GetEnumerator()

Obtém o enumerador.

Métodos de Extensão

EmptyIfNull<T>(IEnumerable<T>)

Retorne essa enumeração caso ela não seja nula. Caso seja enumeração vazia de retorno nulo.

Aplica-se a