Třídy kolekcí Web-Extension
Třídy kolekcí Web-Extension
Tento průvodce ukazuje, jak čtyři třídy kolekcí webových rozšíření v Aspose.Words FOSS pro .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, a WebExtensionReferenceCollection — sdílejí jedinou smlouvu o kolekci prostřednictvím abstraktní BaseWebExtensionCollection základní třídy. Pro to, co úlohové panely, vazby a vlastnosti webových rozšíření skutečně představují, viz Web Extensions průvodce; tato stránka pokrývá pouze kontejner API, který všichni sdílejí.
BaseWebExtensionCollection: Jedna smlouva, čtyři kolekce
BaseWebExtensionCollection je základní třída pro TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection a WebExtensionReferenceCollection. Implementuje IEnumerable<T> a definuje každý člen, který tyto čtyři konkrétní kolekce vystavují — žádná ze čtyř podtříd neoznačuje další metody nebo vlastnosti nad rámec toho, co poskytuje základní třída.
Přidávání, odstraňování a počítání položek
Add(item) přidá zadanou položku do kolekce. Clear() odstraní všechny prvky. Remove(index) odstraní položku na zadaném indexu — přijímá poziční index, nikoli odkaz na položku, takže odstranění konkrétní položky znamená nejprve najít její index. Count vrací počet prvků aktuálně v kolekci.
Procházení kolekce
GetEnumerator() vrací enumerátor, který může procházet kolekci, takže jakákoli BaseWebExtensionCollection-odvozená kolekce podporuje foreach cyklus nad svými položkami bez kódu specifického pro typ.
Tipy a osvědčené postupy
- Protože všechny čtyři kolekce sdílejí stejnou základní smlouvu, kód napsaný vůči členům
Add,Clear,Remove,CountaGetEnumeratorrozhraníBaseWebExtensionCollectionfunguje jednotně napříčTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectionaWebExtensionReferenceCollection. Remove(index)přijímá poziční index — pokud máte jen samotnou položku, nejprve procházejte kolekci, abyste zjistili její index, nebo sledujte index při vkládání.- Přečtěte si
Countpřed iterací, neboforeachpřímo nad kolekcí pomocíGetEnumerator()místo ručního indexování, protože základní smlouva neexponuje poziční getter. - Zavolejte
Clear(), když potřebujete resetovat kolekci, místo opakovaného voláníRemovev cyklu.
Běžné problémy
| Problém | Příčina | Opravit |
|---|---|---|
Remove nepřijímá samotnou položku | Remove(index) na kolekcích odvozených od BaseWebExtensionCollection přijímá poziční index, nikoli referenci | Nejprve najděte index položky (např. při výčtu), pak zavolejte Remove(index) |
| Iterace jedné ze čtyř kolekcí se zdá být duplicitní napříč typy | Každá kolekce je samostatný konkrétní typ, ale všechny sdílejí členy BaseWebExtensionCollection | Napište sdílenou iteraci nebo pomocnou logiku jednou proti členům Add, Clear, Remove, Count a GetEnumerator, které jsou společné všem čtyřem |
| Nejsem si jistý, jaký konkrétní typ kolekce kód potřebuje | Čtyři kolekce jsou k dispozici prostřednictvím různých vlastností na WebExtension a Document | Zkontrolujte Webová rozšíření průvodce, který popisuje, která vlastnost vrací jaký typ kolekce |
FAQ
Proč se čtyři kolekce webových rozšíření chovají stejným způsobem?
Všechny jsou odvozeny ze stejné abstraktní základní třídy, BaseWebExtensionCollection, která definuje Add, Clear, Remove, Count a GetEnumerator — žádná ze čtyř podtříd nepřidává vlastní členy.
Jak mohu odstranit konkrétní položku z jedné z těchto kolekcí?
Zavolejte Remove(index) s pozičním indexem položky — pokud máte jen referenci na položku, nejprve zjistěte index enumerací kolekce.
Mohu iterovat některou z těchto čtyř kolekcí stejným způsobem?
Ano — všechny čtyři implementují IEnumerable<T> až BaseWebExtensionCollection, takže GetEnumerator() / foreach funguje identicky ve všech.
Kde se mohu dozvědět, co konkrétně představuje položka WebExtensionBinding nebo TaskPane?
Viz Webová rozšíření průvodce — tato stránka pokrývá pouze chování sdíleného kontejneru kolekce, nikoli doménové objekty, které kolekce obsahují.
API Reference Shrnutí
| Třída/metoda | Popis: |
|---|---|
BaseWebExtensionCollection | Abstraktní základní třída sdílená všemi čtyřmi typy kolekcí webových rozšíření |
BaseWebExtensionCollection.Add(item) | Přidá položku do kolekce |
BaseWebExtensionCollection.Clear() | Odstraní všechny prvky ze sbírky |
BaseWebExtensionCollection.Remove(index) | Odstraní položku na zadaném indexu |
BaseWebExtensionCollection.GetEnumerator() | Vrátí enumerátor pro iteraci přes sbírku |
BaseWebExtensionCollection.Count | Počet prvků ve sbírce |
TaskPaneCollection | Konkrétní BaseWebExtensionCollection z TaskPane položek |
WebExtensionBindingCollection | Konkrétní BaseWebExtensionCollection z WebExtensionBinding položek |
WebExtensionPropertyCollection | Konkrétní BaseWebExtensionCollection z WebExtensionProperty položek |
WebExtensionReferenceCollection | Konkrétní BaseWebExtensionCollection z WebExtensionReference položek |