Klasy kolekcji Web-Extension

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 BaseWebExtensionCollection Add, Clear, Remove, Count i GetEnumerator działa jednolicie w TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection i WebExtensionReferenceCollection.
  • 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 Count przed iteracją, lub foreach bezpośrednio nad kolekcją przy użyciu GetEnumerator() zamiast ręcznego indeksowania, ponieważ bazowa umowa nie udostępnia getter-a pozycyjnego.
  • Wywołaj Clear(), gdy potrzebujesz zresetować kolekcję, zamiast wielokrotnie wywoływać Remove w pętli.

Typowe problemy

ProblemPrzyczynaNapraw
Remove nie akceptuje samego elementuRemove(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ówKażda kolekcja jest oddzielnym konkretnym typem, ale wszystkie mają wspólne członki BaseWebExtensionCollectionNapisz 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 koduCztery kolekcje są udostępniane z różnych właściwości w WebExtension i DocumentSprawdź 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/MetodaOpis
BaseWebExtensionCollectionAbstrakcyjna 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.CountLiczba elementów w kolekcji
TaskPaneCollectionKonkretne BaseWebExtensionCollection z TaskPane elementów
WebExtensionBindingCollectionKonkretne BaseWebExtensionCollection z WebExtensionBinding elementów
WebExtensionPropertyCollectionKonkretne BaseWebExtensionCollection z WebExtensionProperty elementów
WebExtensionReferenceCollectionKonkretne BaseWebExtensionCollection z WebExtensionReference elementów

Zobacz także

 Polski