EnumerableComCollection<TComEnumerator,TEnumerated> Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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. |