2009-07-31 24 views
0

在Microsoft.Office.Interop.Visio库中,每个实体(例如Shape)都被描述为一个类(ShapeClass)和一个接口Shape。为什么Office Interop API中有接口/类(IFoo,FooClass)模式?

因此,对于每一个元素你有:

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

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

... 

为什么这样设计?

+0

这可以帮助你了解一下:http://stackoverflow.com/questions/1051464/excel-interop-worksheet-or-worksheet/1051546#1051546 – 2009-07-31 15:16:33

回答

1

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

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

因此,在您的示例中,ShapeClass被称为“共同类”,它是Shape界面的命名实现。

合作类被全局注册(在Win32注册表),可以根据自己的友好名称(“PROG-ID”)或GUID,叫“CLSID”创建。

0

我想那是因为它们都实现为COM对象和接口是有定义的类实现合同 - 该接口将在IDL

wiki COM

0

实施,因为这是怎么COM工作。

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

0

这是基于COM的方式工作。

如果您正在寻找良好的.Net设计示例,请在Office互操作库(PIA)中查看NOT。他们是COM对等的直接包装,并且在C#中工作的程度非常糟糕。

为了使Office库更容易使用,试试VSTO Power Tools

+0

感谢库尖 – geejay 2009-07-31 15:18:29

相关问题