VsPackage全球服务生活方式

时间:2015-11-04 01:24:01

标签: c# visual-studio visual-studio-2015 visual-studio-extensions vspackage

我正在阅读有关如何制作VsPackage Global服务的文档:

https://msdn.microsoft.com/en-us/library/bb166804(v=vs.100).aspx

我想创建一个结构作为我的inplementation ICompletionSource使用的“缓存”。如果我理解了实现 ICompletionSourceProvider ICompletionSource 的类,则会使用新的编辑器窗口/完成会话进行实例化。我希望缓存所有会加载数据的会话,然后在需要时进行更新,但每个会话/编辑器都不会更新。

这让我想到了这个问题。什么是全球服务实例生活方式

我正在寻找在Package初始化时创建的某种“singleton”对象,比实时 ICompletionSource 实例更长,它应提供预先缓存的数据。如果对象能够订阅项目更改事件(主要是添加/删除文件)也会很好。 VsPackage全球服务是否适用于此?这里的最佳做法是什么?

我正在尝试阅读,但这里有很多内容。

1 个答案:

答案 0 :(得分:1)

通过它的声音,你真正在MEF世界中拥有ImportExport属性。对于VS中的MEF,任何Export ed(除非您另有说明)是一个单例,一旦创建将在该过程的生命周期中存在。内部类型MEF导出和内部导入以提供对共享状态的访问是非常常见的。