Web-Extension-Sammlungsklassen
Web-Extension-Sammlungsklassen
Dieser Leitfaden zeigt, wie die vier Web-Extension-Sammlungsklassen in Aspose.Words FOSS für .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, und WebExtensionReferenceCollection — einen einzigen Sammlungsvertrag über die abstrakte BaseWebExtensionCollection Basisklasse teilen. Für das, was Task-Panes, Bindungen und Web-Extension-Eigenschaften tatsächlich darstellen, siehe die Web-Erweiterungen Leitfaden; diese Seite behandelt nur den Container API, den sie gemeinsam nutzen.
BaseWebExtensionCollection: Ein Vertrag, Vier Sammlungen
BaseWebExtensionCollection ist die Basisklasse für TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection und WebExtensionReferenceCollection. Sie implementiert IEnumerable<T> und definiert jedes Mitglied, das diese vier konkreten Sammlungen bereitstellen — keiner der vier Subklassen deklariert zusätzliche Methoden oder Eigenschaften über das hinaus, was die Basisklasse bietet.
Hinzufügen, Entfernen und Zählen von Elementen
Add(item) fügt das angegebene Element zur Sammlung hinzu. Clear() entfernt alle Elemente. Remove(index) entfernt das Element am angegebenen Index — es erwartet ein positionsbezogenes index, nicht eine Elementreferenz, sodass das Entfernen eines bestimmten Elements zuerst dessen Index erfordert. Count gibt die aktuelle Anzahl der Elemente in der Sammlung zurück.
Durchlaufen einer Sammlung
GetEnumerator() gibt einen Enumerator zurück, der durch die Sammlung iterieren kann, sodass jede von BaseWebExtensionCollection abgeleitete Sammlung eine foreach-Schleife über ihre Elemente unterstützt, ohne typenspezifischen Iterationscode.
Tipps und bewährte Verfahren
- Da alle vier Sammlungen denselben Basisvertrag teilen, funktioniert Code, der gegen die
Add,Clear,Remove,CountundGetEnumeratorMitglieder vonBaseWebExtensionCollectiongeschrieben wurde, einheitlich überTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectionundWebExtensionReferenceCollection. Remove(index)verwendet einen Positionsindex — wenn Sie nur das Element selbst haben, enumerieren Sie zunächst die Sammlung, um dessen Index zu finden, oder verfolgen Sie den Index zum Zeitpunkt der Einfügung.- Lesen Sie
Countvor dem Iterieren, oderforeachSie die Sammlung direkt mitGetEnumerator(), anstatt manuell zu indizieren, da der Basisvertrag keinen positionsbasierten Getter bereitstellt. - Rufen Sie
Clear()auf, wenn Sie eine Sammlung zurücksetzen müssen, anstatt in einer Schleife wiederholtRemoveaufzurufen.
Häufige Probleme
| Problem | Ursache | Korrektur |
|---|---|---|
Remove akzeptiert das Element selbst nicht | Remove(index) bei von BaseWebExtensionCollection abgeleiteten Sammlungen verwendet einen Positionsindex, nicht eine Referenz | Ermitteln Sie zuerst den Index des Elements (z.B. beim Durchzählen), dann rufen Sie Remove(index) auf |
| Die Iteration einer der vier Sammlungen wirkt über die Typen hinweg dupliziert | Jede Sammlung ist ein separater konkreter Typ, aber sie teilen alle die Mitglieder von BaseWebExtensionCollection | Schreiben Sie die gemeinsame Iterations- oder Hilfslogik einmal für die Mitglieder Add, Clear, Remove, Count und GetEnumerator, die allen vier gemeinsam sind |
| Unsicher, welchen konkreten Sammlungs-Typ ein Code-Abschnitt benötigt | Die vier Sammlungen werden von verschiedenen Eigenschaften in WebExtension und Document bereitgestellt | Überprüfen Sie die Web-Erweiterungen Leitfaden, welche Eigenschaft welchen Sammlungstyp zurückgibt |
FAQ
Warum verhalten sich die vier web-extension Sammlungen auf dieselbe Weise?
Sie erben alle von derselben abstrakten Basisklasse BaseWebExtensionCollection, die Add, Clear, Remove, Count und GetEnumerator definiert — keiner der vier Subklassen fügt eigene Mitglieder hinzu.
Wie entferne ich ein bestimmtes Item aus einer dieser Sammlungen?
Rufen Sie Remove(index) mit dem Positionsindex des Items auf — ermitteln Sie den Index, indem Sie die Sammlung zuerst aufzählen, falls Sie nur die Item-Referenz haben.
Kann ich irgendeine dieser vier Sammlungen auf dieselbe Weise durchlaufen?
Ja — alle vier implementieren IEnumerable<T> bis BaseWebExtensionCollection, sodass GetEnumerator() / foreach identisch über sie hinweg funktioniert.
Wo erfahre ich, was ein WebExtensionBinding- oder TaskPane-Item tatsächlich repräsentiert?
Siehe die Web-Erweiterungen Leitfaden — diese Seite behandelt nur das Verhalten des gemeinsamen Sammlungscontainers, nicht die Domänenobjekte, die die Sammlungen enthalten.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
BaseWebExtensionCollection | Abstrakte Basisklasse, die von allen vier Web-Extension-Sammlungstypen gemeinsam genutzt wird |
BaseWebExtensionCollection.Add(item) | Fügt ein Element zur Sammlung hinzu |
BaseWebExtensionCollection.Clear() | Entfernt alle Elemente aus der Sammlung |
BaseWebExtensionCollection.Remove(index) | Entfernt das Element am angegebenen Index |
BaseWebExtensionCollection.GetEnumerator() | Gibt einen Enumerator zurück, um die Sammlung zu durchlaufen |
BaseWebExtensionCollection.Count | Anzahl der Elemente in der Sammlung |
TaskPaneCollection | Konkretes BaseWebExtensionCollection von TaskPane Elementen |
WebExtensionBindingCollection | Konkretes BaseWebExtensionCollection von WebExtensionBinding Elementen |
WebExtensionPropertyCollection | Konkrete BaseWebExtensionCollection von WebExtensionProperty Elementen |
WebExtensionReferenceCollection | Konkrete BaseWebExtensionCollection von WebExtensionReference Elementen |