首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VSIX编辑器语言扩展组件之间共享状态

在VSIX编辑器语言扩展组件之间共享状态
EN

Stack Overflow用户
提问于 2016-07-01 22:53:38
回答 1查看 61关注 0票数 1

我已经创建了ClassifierErrorTaggerSignatureHelpTextCompletion类。它们都是由VS发现的MEF组件的提供者创建的。

问题是,我想在这些组件之间共享一个C#对象,以共享状态,并允许我省去重新解析每个组件的相同文本。我该怎么做呢?我需要这个状态是每个正在编辑的文件。

VS发现提供者并使用它们创建我的组件。但是,我如何在它们之间传递或共享状态呢?我确实使用了全局单例,但是当我在VS中编辑多个文件时,它们都共享相同的单例,但我需要为每个正在编辑的文件提供一个不同的实例。

EN

回答 1

Stack Overflow用户

发布于 2016-07-02 02:04:32

一种常见的方法是ITextViewITextBuffer都有一个属性属性,您可以将其用作通用的袋子来放东西。上面甚至还有一个GetOrCreateSignletonProperty助手。通常会有一些组件监视ITextBuffer的更改,并以这种方式进行解析,而每个其他组件只是获取这个每个文本缓冲区的对象。

分类器和标记器也可以实现IDisposable,并且ITextViews有一个关闭的事件,因此也可以在从ITextBuffer/ITextView到您自己的类型的某个地方拥有一个静态字典,并以这种方式管理生存期。

不管是哪种方式,你都要做--测试!很容易意外地搞砸并泄漏ITextBufferITextView

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38148427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档