Класи колекцій Web-Extension

Класи колекцій 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’s Add, 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 елементів

Дивіться також

 Українська