Web-Extension 集合类

Web-Extension 集合类

本指南展示了 Aspose.Words FOSS 中针对 .NET 的四个 web-extension 集合类是如何 — TaskPaneCollection, WebExtensionBindingCollection, WebExtensionPropertyCollection,以及 WebExtensionReferenceCollection — 通过抽象基类共享单一集合契约 BaseWebExtensionCollection 基类。有关任务窗格、绑定和 web extension 属性的实际含义,请参见 Web Extensions 指南;此页面仅覆盖它们共同的容器 API。


BaseWebExtensionCollection:一个契约,四个集合

BaseWebExtensionCollection 是 TaskPaneCollection、WebExtensionBindingCollection、WebExtensionPropertyCollection 和 WebExtensionReferenceCollection 的基类。它实现了 IEnumerable<T> 并定义了这四个具体集合公开的所有成员——这四个子类均未声明除基类提供的之外的额外方法或属性。


添加、删除和计数项目

Add(item) 将指定的项目添加到集合中。Clear() 删除所有元素。Remove(index) 删除指定索引处的项目——它接受一个位置 index,而不是项目引用,因此要删除特定项目必须先定位其索引。Count 报告当前集合中元素的数量。


枚举集合

GetEnumerator() 返回一个可以遍历集合的枚举器,因此任何 BaseWebExtensionCollection 派生的集合都支持对其项目进行 foreach 循环,而无需特定类型的迭代代码。


技巧与最佳实践

  • 由于所有四个集合共享相同的基础契约,对 BaseWebExtensionCollection 的 Add、Clear、Remove、Count 和 GetEnumerator 成员编写的代码能够在 TaskPaneCollection、WebExtensionBindingCollection、WebExtensionPropertyCollection 和 WebExtensionReferenceCollection 上统一工作。
  • Remove(index) 接受位置索引 —— 如果你只有该项本身,首先遍历集合以找到其索引,或者在插入时记录索引。
  • 在迭代之前读取 Count,或者直接使用 GetEnumerator() 对集合进行 foreach,而不是手动索引,因为基础契约未公开位置获取器。
  • 当需要重置集合时调用 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 摘要

Class/Method描述
BaseWebExtensionCollection所有四种 web-extension 集合类型共享的抽象基类
BaseWebExtensionCollection.Add(item)向集合中添加项目
BaseWebExtensionCollection.Clear()从集合中移除所有元素
BaseWebExtensionCollection.Remove(index)移除指定索引处的项
BaseWebExtensionCollection.GetEnumerator()返回用于遍历集合的枚举器
BaseWebExtensionCollection.Count集合中的元素数量
TaskPaneCollection具体的 BaseWebExtensionCollection(共 TaskPane 项)
WebExtensionBindingCollection具体的 BaseWebExtensionCollection(共 WebExtensionBinding 项)
WebExtensionPropertyCollection具体的 BaseWebExtensionCollection(共 WebExtensionProperty 项)
WebExtensionReferenceCollection具体 BaseWebExtensionCollection 的 WebExtensionReference 项

另请参阅

 中文