Класи колекцій Web-Extension
Класи колекцій веб-розширень
У цьому посібнику показано, як чотири класи колекцій веб-розширень у Aspose.Words FOSS для .NET — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection, і WebExtensionReferenceCollection — діляться єдиним контрактом колекції через абстрактний BaseWebExtensionCollection базовий клас. Щоб дізнатися, що насправді представляють панелі завдань, прив’язки та властивості веб-розширень, перегляньте Web Extensions посібник; ця сторінка охоплює лише контейнер API, яким вони всі користуються.
BaseWebExtensionCollection: Один контракт, чотири колекції
BaseWebExtensionCollection є базовим класом для TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection і WebExtensionReferenceCollection. Він реалізує IEnumerable<T> і визначає кожен член, який ці чотири конкретні колекції розкривають — жоден із чотирьох підкласів не оголошує додаткових методів або властивостей, окрім того, що надає базовий клас.
Додавання, видалення та підрахунок елементів
Add(item) додає вказаний елемент до колекції. Clear() видаляє всі елементи. Remove(index) видаляє елемент за вказаним індексом — він приймає позиційний index, а не посилання на елемент, тому видалення конкретного елемента означає спочатку знайти його індекс. Count повідомляє кількість елементів, які наразі знаходяться в колекції.
Перерахування колекції
GetEnumerator() повертає перечислювач, який може ітерувати колекцію, тому будь-яка колекція, успадкована від BaseWebExtensionCollection, підтримує цикл foreach над її елементами без коду ітерації, специфічного для типу.
Поради та найкращі практики
- Оскільки всі чотири колекції ділять один і той самий базовий контракт, код, написаний проти
BaseWebExtensionCollection’sAdd,Clear,Remove,CountіGetEnumeratorчленів, працює однаково уTaskPaneCollection,WebExtensionBindingCollection,WebExtensionPropertyCollectionіWebExtensionReferenceCollection. Remove(index)приймає позиційний індекс — якщо у вас є лише сам елемент, спочатку перелічіть колекцію, щоб знайти його індекс, або відстежуйте індекс під час вставки.- Прочитайте
Countперед ітерацією, абоforeachколекцію безпосередньо за допомогоюGetEnumerator(), замість ручного індексування, оскільки базовий контракт не надає позиційного геттера. - Викликайте
Clear(), коли потрібно скинути колекцію, замість того, щоб багаторазово викликатиRemoveу циклі.
Типові проблеми
| Проблема | Причина | Виправити |
|---|---|---|
Remove не приймає сам елемент | Remove(index) у колекціях, що успадковані від BaseWebExtensionCollection, приймає позиційний індекс, а не посилання | Спочатку знайдіть індекс елемента (наприклад під час перебору), потім викличте Remove(index) |
| Ітерація однієї з чотирьох колекцій здається дубльованою між типами | Кожна колекція є окремим конкретним типом, але вони всі спільно використовують члени BaseWebExtensionCollection | Напишіть спільну ітераційну або утилітну логіку один раз, використовуючи члени Add, Clear, Remove, Count і GetEnumerator, спільні для всіх чотирьох |
| Не впевнений, який конкретний тип колекції потрібен коду | Чотири колекції доступні через різні властивості в WebExtension та Document | Перевірте Web Extensions посібник, у якому вказано, яка властивість повертає який тип колекції |
FAQ
Чому чотири колекції веб-розширень поводяться однаково?
Всі вони успадковуються від одного й того ж абстрактного базового класу BaseWebExtensionCollection, який визначає Add, Clear, Remove, Count та GetEnumerator — жоден з чотирьох підкласів не додає власних членів.
Як видалити конкретний елемент з одної з цих колекцій?
Викличте Remove(index) з позиційним індексом елемента — спочатку знайдіть індекс, перебравши колекцію, якщо у вас є лише посилання на елемент.
Чи можу я ітерувати будь-яку з цих чотирьох колекцій однаковим способом?
Так — усі чотири реалізують IEnumerable<T> через BaseWebExtensionCollection, тому GetEnumerator() / foreach працює однаково у всіх них.
Де я можу дізнатися, що саме представляє елемент WebExtensionBinding або TaskPane?
Дивіться Web Extensions посібник — ця сторінка охоплює лише поведінку спільного контейнера колекції, а не доменні об’єкти, які містяться в колекціях.
API Reference Підсумок
| Клас/Метод | Опис |
|---|---|
BaseWebExtensionCollection | Абстрактний базовий клас, спільний для всіх чотирьох типів колекцій веб-розширень |
BaseWebExtensionCollection.Add(item) | Додає елемент до колекції |
BaseWebExtensionCollection.Clear() | Видаляє всі елементи з колекції |
BaseWebExtensionCollection.Remove(index) | Видаляє елемент за вказаним індексом |
BaseWebExtensionCollection.GetEnumerator() | Повертає енамератор для ітерації колекції |
BaseWebExtensionCollection.Count | Кількість елементів у колекції |
TaskPaneCollection | Конкретний BaseWebExtensionCollection з TaskPane елементів |
WebExtensionBindingCollection | Конкретний BaseWebExtensionCollection з WebExtensionBinding елементів |
WebExtensionPropertyCollection | Конкретний BaseWebExtensionCollection з WebExtensionProperty елементів |
WebExtensionReferenceCollection | Конкретний BaseWebExtensionCollection з WebExtensionReference елементів |