Classi di raccolta Web-Extension
Classi di raccolta Web-Extension
Questa guida mostra come le quattro classi di raccolta di estensioni web in Aspose.Words FOSS per .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, e WebExtensionReferenceCollection — condividono un unico contratto di raccolta tramite l’astratta BaseWebExtensionCollection classe base. Per capire cosa rappresentano realmente i riquadri attività, i binding e le proprietà delle estensioni web, vedere il Web Extensions guida; questa pagina tratta solo il contenitore API che tutti condividono.
BaseWebExtensionCollection: Un contratto, quattro raccolte
BaseWebExtensionCollection è la classe base per TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection e WebExtensionReferenceCollection. Implementa IEnumerable<T> e definisce ogni membro che queste quattro collezioni concrete espongono — nessuna delle quattro sottoclassi dichiara metodi o proprietà aggiuntivi rispetto a quanto fornito dalla classe base.
Aggiungere, rimuovere e contare gli elementi
Add(item) aggiunge l’elemento specificato alla raccolta. Clear() rimuove tutti gli elementi. Remove(index) rimuove l’elemento all’indice specificato — richiede un index posizionale, non un riferimento all’elemento, quindi rimuovere un elemento specifico significa prima individuarne l’indice. Count restituisce il numero di elementi attualmente presenti nella raccolta.
Enumerare una raccolta
GetEnumerator() restituisce un enumeratore che può iterare attraverso la collezione, quindi qualsiasi collezione derivata da BaseWebExtensionCollection supporta un ciclo foreach sui suoi elementi senza codice di iterazione specifico per tipo.
Suggerimenti e migliori pratiche
- Poiché tutte e quattro le collezioni condividono lo stesso contratto di base, il codice scritto contro i membri
Add,Clear,Remove,CounteGetEnumeratordiBaseWebExtensionCollectionfunziona in modo uniforme suTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectioneWebExtensionReferenceCollection. Remove(index)accetta un indice posizionale — se hai solo l’elemento stesso, enumera la collezione per trovare prima il suo indice, oppure tieni traccia dell’indice al momento dell’inserimento.- Leggi
Countprima di iterare, oppureforeachdirettamente sulla collezione conGetEnumerator()anziché indicizzare manualmente, poiché il contratto di base non espone un getter posizionale. - Chiama
Clear()quando devi reimpostare una collezione invece di chiamare ripetutamenteRemovein un ciclo.
Problemi comuni
| Problema | Causa | Correggi |
|---|---|---|
Remove non accetta l’elemento stesso | Remove(index) su collezioni derivate da BaseWebExtensionCollection richiede un indice posizionale, non un riferimento | Trova prima l’indice dell’elemento (ad esempio durante l’enumerazione), poi chiama Remove(index) |
| Iterare una delle quattro collezioni sembra duplicato tra i tipi | Ogni collezione è un tipo concreto separato, ma condividono tutti i membri di BaseWebExtensionCollection | Scrivi una sola volta la logica di iterazione o di utilità condivisa sui membri Add, Clear, Remove, Count e GetEnumerator comuni a tutte e quattro |
| Non so quale tipo di collezione concreta serva a un pezzo di codice | Le quattro collezioni sono esposte da proprietà diverse su WebExtension e Document | Controlla il Estensioni Web guida su quale proprietà restituisce quale tipo di collezione |
FAQ
Perché le quattro collezioni di estensioni web si comportano allo stesso modo?
Derivano tutti dalla stessa classe base astratta, BaseWebExtensionCollection, che definisce Add, Clear, Remove, Count e GetEnumerator — nessuna delle quattro sottoclassi aggiunge propri membri.
Come rimuovo un elemento specifico da una di queste collezioni?
Chiama Remove(index) con l’indice posizionale dell’elemento — individua l’indice enumerando prima la collezione se hai solo il riferimento all’elemento.
Posso iterare una qualsiasi di queste quattro collezioni nello stesso modo?
Sì — tutte e quattro implementano IEnumerable<T> tramite BaseWebExtensionCollection, quindi GetEnumerator() / foreach funziona identicamente su di esse.
Dove posso apprendere cosa rappresenta effettivamente un elemento WebExtensionBinding o TaskPane?
Vedi il Estensioni Web guida — questa pagina copre solo il comportamento del contenitore di collezioni condiviso, non gli oggetti di dominio che le collezioni contengono.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
BaseWebExtensionCollection | Classe base astratta condivisa da tutti e quattro i tipi di collezione di estensioni web |
BaseWebExtensionCollection.Add(item) | Aggiunge un elemento alla collezione |
BaseWebExtensionCollection.Clear() | Rimuove tutti gli elementi dalla collezione |
BaseWebExtensionCollection.Remove(index) | Rimuove l’elemento all’indice specificato |
BaseWebExtensionCollection.GetEnumerator() | Restituisce un enumeratore per iterare la collezione |
BaseWebExtensionCollection.Count | Numero di elementi nella collezione |
TaskPaneCollection | Concreto BaseWebExtensionCollection di TaskPane elementi |
WebExtensionBindingCollection | Concreto BaseWebExtensionCollection di WebExtensionBinding elementi |
WebExtensionPropertyCollection | Concreto BaseWebExtensionCollection di WebExtensionProperty elementi |
WebExtensionReferenceCollection | Concreto BaseWebExtensionCollection di WebExtensionReference elementi |