我需要能够从我的包类中与我的MEF组件进行通信。我尝试了几种不同的方法:
使用了包类中的[import]属性。但是,属性始终为null。我发现这是因为您无法从包类中导入MEF组件。
尝试调用" componentModel.DefaultExportProvider.GetExportedValue"获取MEF创建的类的实例。这实际上确实返回了一个实例,但它似乎是一个副本,或者没有链接到实际MEF组件的东西
我尝试访问的MEF组件是我创建的自定义团队资源管理器页面部分。我的包有一个事件,当被触发时,需要通过方法调用调用这个MEF组件,并提供有关我的应用程序状态的一些信息。
这似乎应该是直截了当的,但我已经被困了好几天了。
我只需要与包中的MEF组件进行通信。我可以这样做吗?这是可能吗?
答案 0 :(得分:2)
我找到了答案。对于任何感兴趣的人,请参阅SLaks'发布示例解决方案:Rebracer
基本思想是Package类不能直接创建任何东西,甚至不能创建OLEMenuCommands。所有这些都需要由Visual Studio通过使用MEF隐式实例化。
How to register my service as a global service or how can I use MEF in my scenario?