从 VSPackage 导入 MEF 组件 Class

Importing MEF Components from VSPackage Class

我需要能够与我的包 class 中的 MEF 组件进行通信。我尝试了几种不同的方法:

使用了包 class 中的 [导入] 属性。但是,属性始终为空。我发现这是因为您无法从包 class.

导入 MEF 组件

尝试调用 "componentModel.DefaultExportProvider.GetExportedValue" 以获取由 MEF 创建的 class 实例。这实际上是 return 一个实例,但它似乎是一个副本,或者未链接到实际 MEF 组件的东西

我尝试访问的 MEF 组件是我创建的自定义团队资源管理器页面部分。我的包有一个事件,当触发时,需要通过方法调用调用此 MEF 组件,并提供有关我的应用程序状态的一些信息。

看起来这应该很简单,但我已经卡了好几天了。

我只需要与包中的 MEF 组件进行通信。我可以这样做吗?这是可能吗?

我找到了答案。对于任何感兴趣的人,请参阅 SLaks 发布的示例 solution:Rebracer

基本思想是包 class 不能直接创建任何东西,甚至不能创建 OLEMenuCommands。所有这些都需要使用 MEF 由 visual studio 隐式实例化。