我正嘗試從使用Prism/Unity開發的舊Windows 8.1應用程序將一些代碼遷移到使用模板10和Unity的新UWP應用程序。我在Template 10 here的文檔中看到,您可以使用override
的ResolveForPage
方法。使用模板10依賴注入
在我的舊的Windows 8.1的應用程序,存在棱鏡Resolve
方法,我會override
這樣的:
protected override object Resolve(Type type)
{
return Container.Resolve(type);
}
的模板10方法的簽名是
public override INavigable ResolveForPage(Page page, NavigationService navigationService)
所以我不完全確定如何將其轉換。我已經註冊了我的OnInitializeAsync
庫在我App.xaml.cs
,像這樣:
Container.RegisterType<IPayeesRepository, PayeesRepository>(new ContainerControlledLifetimeManager());
凡Container
是UnityContainer
實例。我的問題是,當我嘗試在另一個頁面上注入依賴項時,我得到一個NullReferenceException
,因爲_payeesRepository
是null
。在我看來,像依賴注入的構造函數沒有被調用,如果我刪除默認的構造函數,那麼我得到一個錯誤。有沒有人得到團結合作與模板10,可能有什麼建議我可能會失蹤?
我也使用Dependency
屬性,像這樣嘗試:
[Dependency]
private IPayeesRepository _payeesRepository { get; set; }
但是,這並不工作。好像IPayeesRepository
只是沒有被實例化,但我並不確定。在我的Windows 8.1應用程序中,它永遠不會被明確實例化,所以我有一種感覺,它與不覆蓋Resolve
方法有關。
配音stylee,我目前正在處理相同的問題,我不得不說,有這個ResolveForPage方法的例子缺乏...如果我找到一個解決方案,我會讓你知道。 – Juan