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 项 |