在MEF中,出口 - 进口的依赖链如何评估?

时间:2011-01-30 19:07:09

标签: mef

我遇到一个问题,我有App1.ClassA导入App2.ClassB,它本身需要在属性中导入App2.ClassC。 App1和App2是2个不同的xaps

App1.ClassA在其初始化代码中调用ComponentInitializer.SatisfyImports(this)。然而,这种令人满意的进口链似乎并没有在整个组装中逐渐降级。

我无法在ClassB上指定ComponentInitializer,因为它正在导出自身(并且MEF会抛出错误)。但是,如果没有这个调用,ClassC就不会被导入到ClassB的属性中。

这是预期的行为,还是我看到其他一些错误,因为哪个ClassC没有加载?

我浏览了这篇文章-http://forums.silverlight.net/forums/t/202811.aspx,但不同之处可能是我在我的场景中越过了Xaps

提前致谢

2 个答案:

答案 0 :(得分:2)

  

我正在我的场景中越过Xaps

默认情况下,ComponentInitializer只能找到当前XAP 中的部分内容。您可以CompositionHost.Initialize致电override this default host configuration

答案 1 :(得分:0)

即使跨越xap边界,解决进口链也受到尊重。我猜xap边界甚至不是xap的问题,因为它在汇编级别工作,只要程序集可用,它就会解析依赖链中的所有导入。

我犯的错误是没有意识到在类实例化期间导入没有被解析(因此解析的元素在构造函数中不可用)。我不得不联系IPartInitialized Notification,并在引发此事件时采取行动。

我认为这是正确的答案,不是为了提升积分榜,而是指导任何人面对同样的问题。