2017-07-11 53 views
0

我與我的應用程序Autofac容器繼承PrismApplicationFÖRAutofac註冊我Xamarin表單頁面的NavigationService Xamarin與棱鏡和Autofact找不到我的導航

_container.RegisterTypeForNavigation<MasterLayoutPage_View, MasterLayoutPageViewModel>("MasterLayoutPage"); 

然後我瀏覽這樣的:

await NavigationService.NavigateAsync("MasterLayoutPage"); 

但它總是說MasterLayoutPage沒有註冊。 但是,當我檢查我的容器註冊類型它在那裏,完全添加爲上面的註冊。

我錯過了什麼嗎?它與Unity一起工作,我只是改成Autofac。

enter image description here

enter image description here

enter image description here

我發現這種奇怪,不知是否因爲團結,才能這可能是與Autofact一個錯誤,或者如果的NavigationService不能註冊類型?

+0

您能提供一個能夠重現問題的示例嗎?這是你真的需要提供代碼的問題,以便任何人都能給你提供超越猜測的幫助。這就是說你從Unity轉換到不熟悉Autofac我真的建議你看看使用DryIoc代替。 –

+0

我完全熟悉Autofac多年來使用它......但在這種情況下,它與導航服務的問題。所有類型的註冊都在圖像中顯示...因此,即使PageNavigationRegistery顯示我的MasterpageLagout存在(請參閱最後一張圖像)和容器(第二張圖像),它仍會拋出第一個圖像異常。 我不能給你更多的代碼,而不僅僅是PrismApplication獲得我用於註冊的容器。然後是導航線。沒有什麼可添加的...使用Prism.Autofac的Nuger – Jnormen

回答

0

似乎我的問題是,我沒有註冊在App.xaml.cs覆蓋方法RegisterTypes內的頁面我在Initialize覆蓋方法上註冊類型。它與Unity一起工作,不知道爲什麼它與autofac的工作方式不同,當它與我使用的是同一個容器時......可能prismApplication for unity與PrismApplication for Autofac有一些區別,我會看看這些實現兩個

+0

這兩者之間的唯一區別是您的服務在ContainerBuilder中註冊,然後Container將被更新。無論容器如何,您在嘗試導航之前都需要註冊這些類型。 –

+0

我在導航之前註冊了所有類型,但我在Application OnInitialize上進行了註冊,然後在我的主要問題中導航。儘管我在調用導航之前在容器和頁面寄存器中找到了所有類型,但它獲得了空引用異常... 但是,如果我在RegisterTypes中註冊頁面,即使註冊頁面和容器顯示爲navigaton之前的結果相同。 使用Unity我沒有問題註冊頁面OnInitialize級別。 – Jnormen

+0

如果您看到Unity處理的某些內容與Autofac不兼容,請使用示例代碼在GitHub上打開一個問題,向我們展示該場景的具體情況。韓國社交協會。 –