在Microsoft.Office.Interop.Visio库中,每个实体(例如Shape)被描述为类(ShapeClass)和接口Shape。

因此,对于您拥有的每个元素:

interface Shape { ... }
class ShapeClass : Shape { ... }

interface Page { ... }
class PageClass : Page { ... }

...

为什么这样设计?

有帮助吗?

解决方案

“互操作”命名空间的一部分暗示这实际上是一个基于COM的API。

COM是微软首次尝试面向开发人员的语言中立组件模型,其核心原则之一是基于接口的设计。

因此,在您的示例中, ShapeClass 称为“co-class”,它是 Shape 接口的命名实现。

Co-classes在全球注册(在Win32注册表中),可以根据其友好名称(“prog-ID”)或名为“CLSID”的GUID创建。

其他提示

我想这将是因为它们都是作为COM对象实现的,接口是为了定义类实现的契约 - 接口将在IDL中实现

wiki COM

因为这就是COM的工作原理。

COM定义组件实现的接口。几乎COM中的所有内容都基于接口。接口比实现它们的类更重要。

这是基于COM的工作方式。

如果您正在寻找良好的.Net设计示例,请 NOT 查看Office互操作库(PIA)。它们是COM等价物的直接包装器,在C#中使用起来非常糟糕。

要使Office库更易于使用,请尝试使用 VSTO Power Tools

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top