升级到棱镜和Xamarin形式后的Unity类型注册问题



我只是升级Xamarin表单和Prism,现在我的App.xaml.cs文件中有很多错误,用于所有Unity注册。另外,正如Brian在更新说明中所述的那样,所有的统一名称空间也都损坏了。对于下面的小片段,新的寄存器类型方法应该是什么样的,容器类型列表中应该是什么?

这个用于工作的片段:

protected override void RegisterTypes()
    {
        Container.RegisterType<ISession, SQLiteSession>(new ContainerControlledLifetimeManager());
        Container.RegisterType<IConfiguration, Configuration>();
        Container.RegisterType<IAuthenticationRestClient, AuthenticationRestClient>();

现在看起来需要看起来像:

protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterType<ISession, SQLiteSession>(new ContainerControlledLifetimeManager());
        Container.RegisterType<IConfiguration, Configuration>();
        Container.RegisterType<IAuthenticationRestClient, AuthenticationRestClient>();

您将IContainerRegistry与Unity容器混淆。他们是独立的事情。IContainerRegistry是Prism 7中的IOC抽象,这意味着它与Unity API无关。但是,当您需要时,您仍然可以访问底层容器。您的原始片段将变为以下内容:

protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
    containerRegistry.RegisterSingleton<ISession, SQLiteSession>();
    containerRegistry.Register<IConfiguration, Configuration>();
    containerRegistry.Register<IAuthenticationRestClient, AuthenticationRestClient>();
    // You can also access the Unity Container by doing:
    var unityContainer = containerRegistry.GetContainer();
}

您可以在github上看到IContainerRegistry的完整定义。

最新更新