在Microsoft.Office.Interop.Visio库中,每个实体(例如Shape)被描述为类(ShapeClass)和接口Shape。
因此,对于您拥有的每个元素:
interface Shape { ... }
class ShapeClass : Shape { ... }
interface Page { ... }
class PageClass : Page { ... }
...
为什么这样设计?
答案 0 :(得分:1)
命名空间的“Interop”部分暗示这实际上是一个基于COM的API。
COM是微软首次尝试面向开发人员的语言中立组件模型,其核心原则之一是基于接口的设计。
因此,在您的示例中,ShapeClass
被称为“共同类”,它是Shape
接口的命名实现。
Co-classes在全球注册(在Win32注册表中),可以根据友好名称(“prog-ID”)或名为“CLSID”的GUID创建。
答案 1 :(得分:0)
我想这将是因为它们都是作为COM对象实现的,接口是为了定义类实现的契约 - 接口将在IDL中实现
答案 2 :(得分:0)
因为这就是COM的工作原理。
COM定义组件实现的接口。几乎COM中的所有内容都基于接口。接口比实现它们的类更重要。
答案 3 :(得分:0)
这是基于COM的工作方式。
如果您正在寻找良好的.Net设计示例,请 NOT 查看Office互操作库(PIA)。它们是COM等价物的直接包装器,在C#中使用起来非常糟糕。
要使Office库更易于使用,请尝试VSTO Power Tools