2011-01-30 61 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,並在引發此事件時採取行動。

我將此標記爲正確答案,不是爲了增加排名,而是指導面臨相同問題的任何人。