Classes de Coleção de Extensão Web
Classes de Coleção de Extensão Web
Este guia mostra como as quatro classes de coleção de extensões web em Aspose.Words FOSS para .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, e WebExtensionReferenceCollection — compartilham um único contrato de coleção através da classe abstrata BaseWebExtensionCollection classe base. Para entender o que painéis de tarefa, ligações e propriedades de extensões web realmente representam, veja o Extensões Web guia; esta página cobre apenas o contêiner API que todos eles compartilham.
BaseWebExtensionCollection: Um Contrato, Quatro Coleções
BaseWebExtensionCollection é a classe base para TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection e WebExtensionReferenceCollection. Ela implementa IEnumerable<T> e define todos os membros que essas quatro coleções concretas expõem — nenhum dos quatro subclasses declara métodos ou propriedades adicionais além do que a classe base fornece.
Adicionando, Removendo e Contando Itens
Add(item) adiciona o item especificado à coleção. Clear() remove todos os elementos. Remove(index) remove o item no índice especificado — ele recebe um index posicional, não uma referência ao item, portanto remover um item específico significa primeiro localizar seu índice. Count relata o número de elementos atualmente na coleção.
Enumerando uma Coleção
GetEnumerator() retorna um enumerador que pode iterar através da coleção, de modo que qualquer coleção derivada de BaseWebExtensionCollection suporta um loop foreach sobre seus itens sem código de iteração específico ao tipo.
Dicas e Melhores Práticas
- Como as quatro coleções compartilham o mesmo contrato base, o código escrito contra os membros
Add,Clear,Remove,CounteGetEnumeratordeBaseWebExtensionCollectionfunciona uniformemente emTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectioneWebExtensionReferenceCollection. Remove(index)recebe um índice posicional — se você tem apenas o próprio item, enumere a coleção para encontrar seu índice primeiro, ou rastreie o índice no momento da inserção.- Leia
Countantes de iterar, ouforeachsobre a coleção diretamente comGetEnumerator()em vez de indexar manualmente, já que o contrato base não expõe um getter posicional. - Chame
Clear()quando precisar redefinir uma coleção em vez de chamar repetidamenteRemoveem um loop.
Problemas Comuns
| Problema | Causa | Corrigir |
|---|---|---|
Remove não aceita o próprio item | Remove(index) em coleções derivadas de BaseWebExtensionCollection aceita um índice posicional, não uma referência | Encontre o índice do item primeiro (por exemplo, ao enumerar), depois chame Remove(index) |
| Iterar sobre uma das quatro coleções parece duplicado entre os tipos | Cada coleção é um tipo concreto separado, mas todas compartilham os membros de BaseWebExtensionCollection | Escreva a lógica de iteração ou utilitária compartilhada uma única vez contra os membros Add, Clear, Remove, Count e GetEnumerator comuns a todas as quatro |
| Não tenho certeza de qual tipo de coleção concreta um trecho de código precisa | As quatro coleções são expostas a partir de diferentes propriedades em WebExtension e Document | Verifique o Web Extensions guia para saber qual propriedade retorna qual tipo de coleção |
FAQ
Por que as quatro coleções de extensões da web se comportam da mesma forma?
Todas derivam da mesma classe base abstrata, BaseWebExtensionCollection, que define Add, Clear, Remove, Count e GetEnumerator — nenhuma das quatro subclasses adiciona seus próprios membros.
Como removo um item específico de uma dessas coleções?
Chame Remove(index) com o índice posicional do item — localize o índice enumerando a coleção primeiro se você só tem a referência do item.
Posso iterar qualquer uma dessas quatro coleções da mesma forma?
Sim — todas as quatro implementam IEnumerable<T> através de BaseWebExtensionCollection, então GetEnumerator() / foreach funciona de forma idêntica em todas elas.
Onde posso aprender o que um item WebExtensionBinding ou TaskPane realmente representa?
Veja o Web Extensions guia — esta página cobre apenas o comportamento do contêiner de coleção compartilhada, não os objetos de domínio que as coleções contêm.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
BaseWebExtensionCollection | Classe base abstrata compartilhada por todos os quatro tipos de coleção de extensão web |
BaseWebExtensionCollection.Add(item) | Adiciona um item à coleção |
BaseWebExtensionCollection.Clear() | Remove todos os elementos da coleção |
BaseWebExtensionCollection.Remove(index) | Remove o item no índice especificado |
BaseWebExtensionCollection.GetEnumerator() | Retorna um enumerador para iterar a coleção |
BaseWebExtensionCollection.Count | Número de elementos na coleção |
TaskPaneCollection | Concreto BaseWebExtensionCollection de TaskPane itens |
WebExtensionBindingCollection | Concreto BaseWebExtensionCollection de WebExtensionBinding itens |
WebExtensionPropertyCollection | Concreto BaseWebExtensionCollection de WebExtensionProperty itens |
WebExtensionReferenceCollection | Concreto BaseWebExtensionCollection de WebExtensionReference itens |