我正尝试从使用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