Các lớp bộ sưu tập Web-Extension
Các lớp bộ sưu tập Web-Extension
Hướng dẫn này cho thấy cách bốn lớp bộ sưu tập tiện ích mở rộng web trong Aspose.Words FOSS cho .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, và WebExtensionReferenceCollection — chia sẻ một hợp đồng bộ sưu tập duy nhất thông qua lớp trừu tượng BaseWebExtensionCollection lớp cơ sở. Để hiểu các khung nhiệm vụ, ràng buộc và thuộc tính tiện ích mở rộng web thực sự đại diện cho gì, xem phần Web Extensions hướng dẫn; trang này chỉ đề cập đến API chứa chung mà chúng đều chia sẻ.
BaseWebExtensionCollection: Một hợp đồng, bốn bộ sưu tập
BaseWebExtensionCollection là lớp cơ sở cho TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, và WebExtensionReferenceCollection. Nó thực thi IEnumerable<T> và định nghĩa mọi thành viên mà bốn bộ sưu tập cụ thể này công khai — không có lớp con nào trong bốn lớp này khai báo thêm phương thức hoặc thuộc tính riêng ngoài những gì lớp cơ sở cung cấp.
Thêm, Xóa và Đếm các mục
Add(item) thêm mục được chỉ định vào bộ sưu tập. Clear() xóa tất cả các phần tử. Remove(index) xóa mục tại chỉ số được chỉ định — nó nhận một index vị trí, không phải tham chiếu tới mục, vì vậy việc xóa một mục cụ thể đồng nghĩa với việc phải tìm chỉ số của nó trước. Count báo cáo số lượng phần tử hiện có trong bộ sưu tập.
Liệt kê một bộ sưu tập
GetEnumerator() trả về một enumerator có thể duyệt qua collection, vì vậy bất kỳ collection nào được tạo ra từ BaseWebExtensionCollection đều hỗ trợ vòng lặp foreach trên các mục của nó mà không cần mã lặp đặc thù cho kiểu.
Mẹo và Thực hành Tốt nhất
- Vì cả bốn collection đều chia sẻ cùng một hợp đồng cơ bản, mã được viết dựa trên các thành viên
Add,Clear,Remove,CountvàGetEnumeratorcủaBaseWebExtensionCollectionhoạt động một cách đồng nhất trênTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectionvàWebExtensionReferenceCollection. Remove(index)nhận một chỉ số vị trí — nếu bạn chỉ có chính mục đó, hãy duyệt collection để tìm chỉ số của nó trước, hoặc theo dõi chỉ số khi chèn.- Đọc
Counttrước khi lặp, hoặcforeachtrực tiếp trên collection bằngGetEnumerator()thay vì tự chỉ mục, vì hợp đồng cơ bản không cung cấp getter vị trí. - Gọi
Clear()khi bạn cần đặt lại một collection thay vì gọiRemoveliên tục trong vòng lặp.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Sửa |
|---|---|---|
Remove không chấp nhận mục đó | Remove(index) trên các collection được suy ra từ BaseWebExtensionCollection nhận một chỉ mục vị trí, không phải tham chiếu | Đầu tiên hãy tìm chỉ số của mục (ví dụ trong quá trình liệt kê), sau đó gọi Remove(index) |
| Việc duyệt một trong bốn collection cảm thấy bị trùng lặp giữa các kiểu | Mỗi collection là một kiểu cụ thể riêng biệt, nhưng chúng đều chia sẻ các thành viên của BaseWebExtensionCollection | Viết một lần logic duyệt chung hoặc tiện ích dựa trên các thành viên Add, Clear, Remove, Count và GetEnumerator chung cho cả bốn |
| Không chắc kiểu collection cụ thể nào mà đoạn mã cần | Bốn bộ sưu tập được tiết lộ từ các thuộc tính khác nhau trên WebExtension và Document | Kiểm tra Web Extensions hướng dẫn về thuộc tính nào trả về loại bộ sưu tập nào |
FAQ
Tại sao bốn bộ sưu tập phần mở rộng web lại hoạt động theo cùng một cách?
Tất cả chúng đều kế thừa từ cùng một lớp cơ sở trừu tượng, BaseWebExtensionCollection, lớp này định nghĩa Add, Clear, Remove, Count và GetEnumerator — không có lớp con nào trong bốn lớp này thêm thành viên riêng của chúng.
Làm thế nào để tôi loại bỏ một mục cụ thể khỏi một trong các bộ sưu tập này?
Gọi Remove(index) với chỉ số vị trí của mục — xác định chỉ số bằng cách liệt kê bộ sưu tập trước nếu bạn chỉ có tham chiếu tới mục.
Tôi có thể duyệt bất kỳ bộ sưu tập nào trong bốn bộ này theo cùng một cách không?
Có — cả bốn đều triển khai IEnumerable<T> qua BaseWebExtensionCollection, vì vậy GetEnumerator() / foreach hoạt động giống hệt nhau trên tất cả chúng.
Tôi có thể tìm hiểu ở đâu về việc một mục WebExtensionBinding hoặc TaskPane thực sự đại diện cho gì?
Xem Web Extensions hướng dẫn — trang này chỉ đề cập đến hành vi chung của bộ chứa bộ sưu tập, không bao gồm các đối tượng miền mà các bộ sưu tập chứa.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
BaseWebExtensionCollection | Lớp cơ sở trừu tượng được chia sẻ bởi tất cả bốn loại bộ sưu tập tiện ích web |
BaseWebExtensionCollection.Add(item) | Thêm một mục vào bộ sưu tập |
BaseWebExtensionCollection.Clear() | Xóa tất cả các phần tử khỏi bộ sưu tập |
BaseWebExtensionCollection.Remove(index) | Xóa mục tại chỉ mục đã chỉ định |
BaseWebExtensionCollection.GetEnumerator() | Trả về một enumerator để lặp lại qua collection |
BaseWebExtensionCollection.Count | Số lượng phần tử trong collection |
TaskPaneCollection | Cụ thể BaseWebExtensionCollection của TaskPane mục |
WebExtensionBindingCollection | Cụ thể BaseWebExtensionCollection của WebExtensionBinding mục |
WebExtensionPropertyCollection | Cụ thể BaseWebExtensionCollection của WebExtensionProperty mục |
WebExtensionReferenceCollection | Cụ thể BaseWebExtensionCollection của WebExtensionReference mục |