Κλάσεις Συλλογής Web-Extension
Κλάσεις Συλλογής Web-Extension
Αυτός ο οδηγός δείχνει πώς οι τέσσερις κλάσεις συλλογής web-extension στο Aspose.Words FOSS για .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, και WebExtensionReferenceCollection — μοιράζονται ένα ενιαίο συμβόλαιο συλλογής μέσω του αφηρημένου BaseWebExtensionCollection βασική κλάση. Για το τι πραγματικά αντιπροσωπεύουν τα task panes, bindings και ιδιότητες web extension, δείτε το Web Extensions οδηγός; αυτή η σελίδα καλύπτει μόνο το container API που μοιράζονται όλοι.
BaseWebExtensionCollection: Ένα Συμβόλαιο, Τέσσερις Συλλογές
BaseWebExtensionCollection είναι η βασική κλάση για TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection και WebExtensionReferenceCollection. Υλοποιεί το IEnumerable<T> και ορίζει κάθε μέλος που εκθέτουν αυτές οι τέσσερις συγκεκριμένες συλλογές — κανένα από τα τέσσερα υποκατηγορίες δεν δηλώνει πρόσθετες μεθόδους ή ιδιότητες εκτός από αυτές που παρέχει η βασική κλάση.
Προσθήκη, Αφαίρεση και Καταμέτρηση Στοιχείων
Add(item) προσθέτει το καθορισμένο στοιχείο στη συλλογή. Clear() αφαιρεί όλα τα στοιχεία. Remove(index) αφαιρεί το στοιχείο στον καθορισμένο δείκτη — παίρνει μια θέση index, όχι μια αναφορά στοιχείου, έτσι η αφαίρεση ενός συγκεκριμένου στοιχείου σημαίνει πρώτα τον εντοπισμό του δείκτη του. Count αναφέρει τον αριθμό των στοιχείων που βρίσκονται αυτή τη στιγμή στη συλλογή.
Απαρίθμηση μιας Συλλογής
GetEnumerator() επιστρέφει έναν enumerator που μπορεί να διατρέξει τη συλλογή, έτσι οποιαδήποτε συλλογή που προέρχεται από BaseWebExtensionCollection υποστηρίζει έναν foreach βρόχο πάνω στα στοιχεία της χωρίς κώδικα επανάληψης ειδικού τύπου.
Συμβουλές και βέλτιστες πρακτικές
- Επειδή και οι τέσσερις συλλογές μοιράζονται το ίδιο βασικό συμβόλαιο, ο κώδικας γραμμένος εναντίον των μελών
Add,Clear,Remove,CountκαιGetEnumeratorτουBaseWebExtensionCollectionλειτουργεί ομοιόμορφα σεTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectionκαιWebExtensionReferenceCollection. Remove(index)παίρνει έναν δείκτη θέσης — αν έχετε μόνο το ίδιο το στοιχείο, enumerate τη συλλογή για να βρείτε πρώτα τον δείκτη του, ή παρακολουθήστε τον δείκτη κατά τη στιγμή της εισαγωγής.- Διαβάστε το
Countπριν την επανάληψη, ήforeachαπευθείας στη συλλογή με τοGetEnumerator()αντί για χειροκίνητη πρόσβαση με δείκτη, καθώς το βασικό συμβόλαιο δεν εκθέτει getter θέσης. - Καλέστε το
Clear()όταν χρειάζεται να επαναφέρετε μια συλλογή αντί να καλείτε επανειλημμένα τοRemoveσε βρόχο.
Συνηθισμένα προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
Remove δεν δέχεται το ίδιο αντικείμενο | Remove(index) σε συλλογές που προέρχονται από BaseWebExtensionCollection δέχεται έναν διατεταγμένο δείκτη, όχι αναφορά | Βρείτε πρώτα το δείκτη του αντικειμένου (π.χ. κατά την αρίθμηση), μετά καλέστε το Remove(index) |
| Η επανάληψη μιας από τις τέσσερις συλλογές φαίνεται επαναλαμβανόμενη μεταξύ των τύπων | Κάθε συλλογή είναι ξεχωριστός συγκεκριμένος τύπος, αλλά όλες μοιράζονται τα μέλη του BaseWebExtensionCollection | Γράψτε τη κοινή λογική επανάληψης ή βοηθητική μία φορά χρησιμοποιώντας τα μέλη Add, Clear, Remove, Count και GetEnumerator που είναι κοινά σε όλες τις τέσσερις |
| Αβέβαιος ποιος συγκεκριμένος τύπος συλλογής χρειάζεται ένα τμήμα κώδικα | Οι τέσσερις συλλογές εκτίθενται από διαφορετικές ιδιότητες στο WebExtension και Document | Ελέγξτε το Web Extensions οδηγός για το ποια ιδιότητα επιστρέφει ποιο τύπο συλλογής |
FAQ
Γιατί οι τέσσερις συλλογές web-extension συμπεριφέρονται με τον ίδιο τρόπο;
Όλες προέρχονται από την ίδια αφηρημένη βασική κλάση, BaseWebExtensionCollection, η οποία ορίζει Add, Clear, Remove, Count και GetEnumerator — κανένα από τις τέσσερις υποκλάσεις δεν προσθέτει δικά της μέλη.
Πώς μπορώ να αφαιρέσω ένα συγκεκριμένο στοιχείο από μία από αυτές τις συλλογές;
Κλήστε το Remove(index) με τον δείκτη θέσης του στοιχείου — εντοπίστε τον δείκτη κάνοντας απαρίθμηση της συλλογής πρώτα εάν έχετε μόνο την αναφορά του στοιχείου.
Μπορώ να διατρέξω οποιαδήποτε από αυτές τις τέσσερις συλλογές με τον ίδιο τρόπο;
Ναι — όλες οι τέσσερις υλοποιούν το IEnumerable<T> έως το BaseWebExtensionCollection, έτσι το GetEnumerator() / foreach λειτουργεί ταυτόσημα σε όλες.
Από πού μπορώ να μάθω τι αντιπροσωπεύει πραγματικά ένα στοιχείο WebExtensionBinding ή TaskPane;
Δείτε το Web Extensions οδηγός — αυτή η σελίδα καλύπτει μόνο τη συμπεριφορά του κοινόχρηστου περιέκτη συλλογής, όχι τα αντικείμενα τομέα που περιέχουν οι συλλογές.
API Reference Σύνοψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
BaseWebExtensionCollection | Αφηρημένη βασική κλάση κοινή για όλους τους τέσσερις τύπους συλλογών web-extension |
BaseWebExtensionCollection.Add(item) | Προσθέτει ένα στοιχείο στη συλλογή |
BaseWebExtensionCollection.Clear() | Αφαιρεί όλα τα στοιχεία από τη συλλογή |
BaseWebExtensionCollection.Remove(index) | Αφαιρεί το στοιχείο στον καθορισμένο δείκτη |
BaseWebExtensionCollection.GetEnumerator() | Επιστρέφει έναν enumerator για την επανάληψη της συλλογής |
BaseWebExtensionCollection.Count | Αριθμός στοιχείων στη συλλογή |
TaskPaneCollection | Συγκεκριμένο BaseWebExtensionCollection από TaskPane αντικείμενα |
WebExtensionBindingCollection | Συγκεκριμένο BaseWebExtensionCollection από WebExtensionBinding αντικείμενα |
WebExtensionPropertyCollection | Συγκεκριμένο BaseWebExtensionCollection από WebExtensionProperty στοιχεία |
WebExtensionReferenceCollection | Συγκεκριμένο BaseWebExtensionCollection από WebExtensionReference στοιχεία |