Klasy kolekcji Web-Extension
Klasy kolekcji Web-Extension
Ten przewodnik pokazuje, jak cztery klasy kolekcji rozszerzeń internetowych w Aspose.Words FOSS dla .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, oraz WebExtensionReferenceCollection — współdzielą pojedynczy kontrakt kolekcji poprzez abstrakcyjną BaseWebExtensionCollection klasę bazową. Aby dowiedzieć się, co tak naprawdę reprezentują panele zadań, powiązania i właściwości rozszerzeń internetowych, zobacz Web Extensions przewodnik; ta strona obejmuje tylko kontener API, który wszystkie one współdzielą.
BaseWebExtensionCollection: Jeden kontrakt, cztery kolekcje
BaseWebExtensionCollection jest klasą bazową dla TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection i WebExtensionReferenceCollection. Implementuje IEnumerable<T> i definiuje każdy członek, który te cztery konkretne kolekcje udostępniają — żaden z czterech podklas nie deklaruje dodatkowych metod ani własnych właściwości poza tym, co zapewnia klasa bazowa.
Dodawanie, usuwanie i liczenie elementów
Add(item) dodaje określony element do kolekcji. Clear() usuwa wszystkie elementy. Remove(index) usuwa element pod wskazanym indeksem — przyjmuje pozycjonalny index, a nie odniesienie do elementu, więc usunięcie konkretnego elementu wymaga najpierw odnalezienia jego indeksu. Count podaje liczbę elementów aktualnie znajdujących się w kolekcji.
Enumerowanie kolekcji
GetEnumerator() zwraca enumerator, który może iterować po kolekcji, więc każda kolekcja pochodna od BaseWebExtensionCollection obsługuje pętlę foreach nad jej elementami bez kodu iteracji specyficznego dla typu.
Wskazówki i najlepsze praktyki
- Ponieważ wszystkie cztery kolekcje dzielą tę samą bazową umowę, kod napisany względem
BaseWebExtensionCollectionAdd,Clear,Remove,CountiGetEnumeratordziała jednolicie wTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectioniWebExtensionReferenceCollection. Remove(index)przyjmuje indeks pozycyjny — jeśli masz tylko sam element, najpierw wylicz kolekcję, aby znaleźć jego indeks, lub śledź indeks w momencie wstawiania.- Przeczytaj
Countprzed iteracją, lubforeachbezpośrednio nad kolekcją przy użyciuGetEnumerator()zamiast ręcznego indeksowania, ponieważ bazowa umowa nie udostępnia getter-a pozycyjnego. - Wywołaj
Clear(), gdy potrzebujesz zresetować kolekcję, zamiast wielokrotnie wywoływaćRemovew pętli.
Typowe problemy
| Problem | Przyczyna | Napraw |
|---|---|---|
Remove nie akceptuje samego elementu | Remove(index) na kolekcjach pochodzących od BaseWebExtensionCollection przyjmuje indeks pozycyjny, a nie referencję | Najpierw znajdź indeks elementu (na przykład podczas iteracji), a potem wywołaj Remove(index) |
| Iterowanie jednej z czterech kolekcji wydaje się powielone wśród typów | Każda kolekcja jest oddzielnym konkretnym typem, ale wszystkie mają wspólne członki BaseWebExtensionCollection | Napisz wspólną logikę iteracji lub narzędziową raz, operując na członkach Add, Clear, Remove, Count i GetEnumerator wspólnych dla wszystkich czterech |
| Niepewny, jaki konkretny typ kolekcji jest potrzebny w danym fragmencie kodu | Cztery kolekcje są udostępniane z różnych właściwości w WebExtension i Document | Sprawdź Web Extensions przewodnik, który opisuje, która własność zwraca jaki typ kolekcji |
FAQ
Dlaczego cztery kolekcje rozszerzeń internetowych zachowują się tak samo?
Wszystkie dziedziczą z tej samej abstrakcyjnej klasy bazowej, BaseWebExtensionCollection, która definiuje Add, Clear, Remove, Count i GetEnumerator — żadna z czterech podklas nie dodaje własnych członków.
Jak usunąć konkretny element z jednej z tych kolekcji?
Wywołaj Remove(index) z pozycjonalnym indeksem elementu — najpierw znajdź indeks, enumerując kolekcję, jeśli masz tylko referencję do elementu.
Czy mogę iterować dowolną z tych czterech kolekcji w ten sam sposób?
Tak — wszystkie cztery implementują IEnumerable<T> poprzez BaseWebExtensionCollection, więc GetEnumerator() / foreach działa identycznie we wszystkich.
Gdzie mogę dowiedzieć się, co tak naprawdę reprezentuje element WebExtensionBinding lub TaskPane?
Zobacz Web Extensions przewodnik — ta strona opisuje tylko zachowanie współdzielonego kontenera kolekcji, a nie obiekty domenowe, które kolekcje przechowują.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
BaseWebExtensionCollection | Abstrakcyjna klasa bazowa współdzielona przez wszystkie cztery typy kolekcji rozszerzeń internetowych |
BaseWebExtensionCollection.Add(item) | Dodaje element do kolekcji |
BaseWebExtensionCollection.Clear() | Usuwa wszystkie elementy z kolekcji |
BaseWebExtensionCollection.Remove(index) | Usuwa element o podanym indeksie |
BaseWebExtensionCollection.GetEnumerator() | Zwraca enumerator do iteracji kolekcji |
BaseWebExtensionCollection.Count | Liczba elementów w kolekcji |
TaskPaneCollection | Konkretne BaseWebExtensionCollection z TaskPane elementów |
WebExtensionBindingCollection | Konkretne BaseWebExtensionCollection z WebExtensionBinding elementów |
WebExtensionPropertyCollection | Konkretne BaseWebExtensionCollection z WebExtensionProperty elementów |
WebExtensionReferenceCollection | Konkretne BaseWebExtensionCollection z WebExtensionReference elementów |