我一直在查看 VSTO 库,主要是为了好玩,我注意到有一些东西叫做Inspector
as well as InspectorClass
.
有什么区别,为什么会在那里,我该如何使用它?(注意,我不是在寻找关于如何使用这些类进行编码的答案,而是在寻找某种架构模式背后的基本原理。纯粹是学术好奇心。)
我一直在查看 VSTO 库,主要是为了好玩,我注意到有一些东西叫做Inspector
as well as InspectorClass
.
有什么区别,为什么会在那里,我该如何使用它?(注意,我不是在寻找关于如何使用这些类进行编码的答案,而是在寻找某种架构模式背后的基本原理。纯粹是学术好奇心。)
InspectorClass
是COM 接口的一个coclass(具体实现) (例如,它是一个带有元数据 + 代码的 COM 对象)。An可以直接实例化,即使它纯粹作为接口定义存在(它实际上是在幕后实例化)。Inspector
Inspector
InspectorClass
InspectorClass
可以实例化,因为它表示一个具体的类实例,尽管随着VSTO 添加了对在 .NET 4 中嵌入互操作类型的支持-不再使用对*Class
使用的支持,并且或多或少地存在向后兼容性。
所有这一切都是说你现在应该使用Inspector
而不是InspectorClass
可以包含可执行代码的。来自MSDN 博客:
...嵌入元数据是安全的,但不是任何可能包含可执行代码的东西(类类型包含元数据和代码,而接口只包含元数据)
从这个语句中,您可以推断出InspectorClass
包含可执行代码,而Inspector
没有 - 它纯粹是一个接口(元数据)。这意味着嵌入互操作类型不允许支持*Class
实现。