【发布时间】:2013-10-01 04:35:40
【问题描述】:
我有一个 Visual Studio 扩展,其中大部分功能都是通过 MEF 编写的。到目前为止,我的个人功能是每个 ITextBuffer,所以我使用了 Properties 成员来缓存实例。
但是,现在我有一些需要针对每个项目和每个解决方案的功能。 EnvDTE 类提供了一个 Properties 对象,但我不知道它们是否可以存储我自己的任意数据。我真的不想让自己的数据静态化。
如何在不使用全局变量的情况下存储每个项目和每个解决方案的数据?
编辑:
我还可能会提到,由于您不能将 MEF 导入用于静态数据,即使您将其隐藏在单例中,那么使用全局变量路由在物理上也是不可能的。所以我真的,真的需要一些不是全球性的东西。
编辑:
我说的是对象引用,而不是持久值。我不需要在解决方案或项目文件中存储任何内容,只需使用对象即可。
【问题讨论】:
-
你能举一些例子/截图吗?我对 MEF 不是很熟悉,这可能就是您的问题对我来说不清楚的原因。
-
@Neolisk:你想要什么截图,MEF 的文档说你不能导入静态成员?或者没有用户可用存储空间的 EnvDTE.Solution/EnvDTE.Project 的文档?
-
无意冒犯,我只是想增加这个问题被回答的机会,如果不是我,其他人会。您提供的信息越多越好。你不想白白烧掉你的赏金,对吧?是的,指向文档相关部分的链接会有所帮助。
-
您是否正在为每个解决方案寻找 IVsSolutionPersistence?对于每个项目,大多数项目系统层次结构(不是全部)都实现 IVsBuildPropertyStorage。
-
@SimonMourier:不,我正在处理非持久性数据。抱歉,这不是很清楚。
标签: visual-studio-2012 mef visual-studio-extensions envdte