2011-01-30 54 views
1

我面临一个问题,我有App1.ClassA导入App2.ClassB本身需要导入属性中的App2.ClassC。 App1和App2是2种不同的xaps在MEF中,对出口 - 进口依赖链的评估是如何进行的?

App1.ClassA在其初始化代码中调用ComponentInitializer.SatisfyImports(this)。然而,这个令人满意的进口链似乎并没有在各个组件之间级联。

我不能在ClassB上指定ComponentInitializer,因为它是自己导出的(并且MEF会引发错误)。但是,如果没有此调用,ClassC不会被导入到ClassB的属性中。

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

我通过这篇文章-http去://forums.silverlight.net/forums/t/202811.aspx,但差异可能是我正在跨越Xaps在我的情况

在此先感谢

回答

2

我正在跨越Xaps在我的情况

默认情况下,ComponentInitializer会发现在当前XAP只有部分。您可致电致电CompositionHost.Initialize

0

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

我犯的错误是没有意识到导入在类实例化过程中没有解决(因此解析的元素在构造函数中不可用)。我必须连接IPartInitialized Notification,并在引发此事件时采取行动。

我将此标记为正确答案,不是为了增加排名,而是指导面临相同问题的任何人。