Classes de collection d'extension Web
Classes de collection d’extensions Web
Ce guide montre comment les quatre classes de collection d’extensions web dans Aspose.Words FOSS pour .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, et WebExtensionReferenceCollection — partagent un contrat de collection unique via la classe abstraite BaseWebExtensionCollection de base. Pour ce que les panneaux de tâches, les liaisons et les propriétés d’extension web représentent réellement, consultez le Extensions Web guide ; cette page ne couvre que le conteneur API qu’ils partagent tous.
BaseWebExtensionCollection : Un contrat, quatre collections
BaseWebExtensionCollection est la classe de base de TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection et WebExtensionReferenceCollection. Elle implémente IEnumerable<T> et définit chaque membre que ces quatre collections concrètes exposent — aucune des quatre sous-classes ne déclare de méthodes ou de propriétés supplémentaires au-delà de ce que fournit la classe de base.
Ajout, suppression et comptage des éléments
Add(item) ajoute l’élément spécifié à la collection. Clear() supprime tous les éléments. Remove(index) supprime l’élément à l’index indiqué — il prend un index positionnel, pas une référence d’élément, de sorte que la suppression d’un élément spécifique implique d’abord de localiser son index. Count indique le nombre d’éléments actuellement dans la collection.
Énumération d’une collection
GetEnumerator() renvoie un énumérateur qui peut parcourir la collection, de sorte que toute collection dérivée de BaseWebExtensionCollection prend en charge une boucle foreach sur ses éléments sans code d’itération spécifique au type.
Conseils et meilleures pratiques
- Parce que les quatre collections partagent le même contrat de base, le code écrit contre les membres
Add,Clear,Remove,CountetGetEnumeratordeBaseWebExtensionCollectionfonctionne de manière uniforme surTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectionetWebExtensionReferenceCollection. Remove(index)prend un indice positionnel — si vous ne disposez que de l’élément lui-même, parcourez la collection pour en trouver d’abord l’indice, ou suivez l’indice au moment de l’insertion.- Lisez
Countavant d’itérer, ouforeachdirectement sur la collection avecGetEnumerator()plutôt que d’indexer manuellement, car le contrat de base n’expose pas de récupérateur positionnel. - Appelez
Clear()lorsque vous devez réinitialiser une collection plutôt que d’appelerRemovede façon répétée dans une boucle.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
Remove n’accepte pas l’élément lui-même | Remove(index) sur les collections dérivées de BaseWebExtensionCollection prend un indice positionnel, pas une référence | Trouvez d’abord l’indice de l’élément (par exemple lors de l’énumération), puis appelez Remove(index) |
| Parcourir l’une des quatre collections semble dupliqué entre les types | Chaque collection est un type concret distinct, mais elles partagent toutes les membres de BaseWebExtensionCollection | Écrivez la logique d’itération ou d’utilitaire partagée une fois en vous basant sur les membres Add, Clear, Remove, Count et GetEnumerator communs aux quatre |
| Pas sûr du type de collection concret dont un morceau de code a besoin | Les quatre collections sont exposées à partir de différentes propriétés sur WebExtension et Document | Vérifiez le Web Extensions guide indiquant quelle propriété renvoie quel type de collection |
FAQ
Pourquoi les quatre collections d’extensions web se comportent-elles de la même manière ?
Ils dérivent tous de la même classe de base abstraite, BaseWebExtensionCollection, qui définit Add, Clear, Remove, Count et GetEnumerator — aucune des quatre sous-classes n’ajoute ses propres membres.
Comment supprimer un élément spécifique d’une de ces collections ?
Appelez Remove(index) avec l’indice positionnel de l’élément — localisez l’indice en énumérant d’abord la collection si vous ne disposez que de la référence de l’élément.
Puis-je parcourir l’une de ces quatre collections de la même façon ?
Oui — les quatre implémentent IEnumerable<T> jusqu’à BaseWebExtensionCollection, donc GetEnumerator() / foreach fonctionne de manière identique pour chacune d’elles.
Où puis-je apprendre ce que représente réellement un élément WebExtensionBinding ou TaskPane ?
Voir le Web Extensions guide — cette page ne couvre que le comportement du conteneur de collections partagé, et non les objets de domaine que les collections contiennent.
API Reference Résumé
| Class/Method | Description |
|---|---|
BaseWebExtensionCollection | Classe de base abstraite partagée par les quatre types de collection d’extensions web |
BaseWebExtensionCollection.Add(item) | Ajoute un élément à la collection |
BaseWebExtensionCollection.Clear() | Supprime tous les éléments de la collection |
BaseWebExtensionCollection.Remove(index) | Supprime l’élément à l’index spécifié |
BaseWebExtensionCollection.GetEnumerator() | Renvoie un énumérateur pour parcourir la collection |
BaseWebExtensionCollection.Count | Nombre d’éléments dans la collection |
TaskPaneCollection | Concret BaseWebExtensionCollection de TaskPane éléments |
WebExtensionBindingCollection | Concret BaseWebExtensionCollection de WebExtensionBinding éléments |
WebExtensionPropertyCollection | Concret BaseWebExtensionCollection de WebExtensionProperty éléments |
WebExtensionReferenceCollection | Concret BaseWebExtensionCollection de WebExtensionReference éléments |