我正在阅读有关如何制作VsPackage Global服务的文档:
https://msdn.microsoft.com/en-us/library/bb166804(v=vs.100).aspx
我想创建一个结构作为我的inplementation ICompletionSource使用的“缓存”。如果我理解了实现 ICompletionSourceProvider 和 ICompletionSource 的类,则会使用新的编辑器窗口/完成会话进行实例化。我希望缓存所有会加载数据的会话,然后在需要时进行更新,但每个会话/编辑器都不会更新。
这让我想到了这个问题。什么是全球服务实例生活方式?
我正在寻找在Package初始化时创建的某种“singleton”对象,比实时 ICompletionSource 实例更长,它应提供预先缓存的数据。如果对象能够订阅项目更改事件(主要是添加/删除文件)也会很好。 VsPackage全球服务是否适用于此?这里的最佳做法是什么?
我正在尝试阅读,但这里有很多内容。
答案 0 :(得分:1)
通过它的声音,你真正在MEF世界中拥有Import
和Export
属性。对于VS中的MEF,任何Export
ed(除非您另有说明)是一个单例,一旦创建将在该过程的生命周期中存在。内部类型MEF导出和内部导入以提供对共享状态的访问是非常常见的。