VsPack全球服务生活方式

本文关键字:生活方式 服务 VsPack | 更新日期: 2023-09-27 18:20:31

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

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

我想将结构创建为一种"缓存",由我的实现ICompletionSource使用。如果我理解得很清楚,实现ICompleteSourceProvidericompleteSource的类将与新的编辑器窗口/完成会话相协调。我希望在所有会话中缓存一次数据,然后在需要时更新,但这不会随每个会话/编辑器一起消失。

这就引出了我的问题。什么是Global Service实例生活方式?

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

我正在努力阅读,但这里有很多东西需要研究。

VsPack全球服务生活方式

因此,从声音上看,您确实处于具有ImportExport属性的MEF世界中。对于VS中的MEF,任何Export ed(除非另有说明,否则由您控制)都是一个单例,一旦创建,它将在进程的整个生命周期中生存。MEF在内部导出和导入内部类型以提供对共享状态的访问是非常常见的。