Inspector和InspectorClass之间的区别

时间:2012-10-17 11:07:52

标签: com outlook vsto outlook-addin coclass

我一直在关注VSTO库,主要是为了它的乐趣,我注意到有一些名为InspectorInspectorClass的东西。

有什么区别,为什么会有,我该如何使用它? (NB我不是在寻找如何使用这些类进行编码的答案,而是寻找某种架构模式背后的基本原理。纯粹是学术界的好奇心。)

1 个答案:

答案 0 :(得分:1)

InspectorClasscoclass COM接口的Inspector具体实现)(例如,它是一个带有元数据+代码的COM对象< / em>的)。 Inspector可以直接实例化,即使它纯粹作为接口定义(it actually instantiates InspectorClassbehind the scenes)存在。

InspectorClass可以实例化,因为它代表了一个具体的类实例,尽管它是VSTO added support for embedding interop types in .NET 4 - support for the *Class usage is no longer used并且可以或多或少地存在于backwards compatibility

所有这一切要说的是,您现在应该使用Inspector而不是InspectorClass,其中包含可执行代码。来自MSDN blogs

  

...嵌入元数据是安全的,但不能包含可能包含可执行代码的任何内容(类类型包含元数据和代码,而接口只包含元数据

从此声明中,您可以推断InspectorClass包含可执行代码,而Inspector则不包含 - 它纯粹是一个接口(元数据)。这意味着嵌入互操作类型不允许支持*Class实现。