Xamarin.forms 升级到Prism和Xamarin表单后的Unity类型注册问题

Xamarin.forms 升级到Prism和Xamarin表单后的Unity类型注册问题,xamarin.forms,prism,Xamarin.forms,Prism,我刚刚升级了Xamarin Forms和Prism,现在我的app.xaml.cs文件中有一大堆关于Unity注册的错误。另外,正如Brian在更新说明中所述,所有Unity名称空间也都被破坏了。对于下面的小片段,新的RegisterTypes方法应该是什么样的,容器类型列表中的1个应该是什么样的 此代码段用于: protected override void RegisterTypes() { Container.RegisterType<ISession, SQ

我刚刚升级了Xamarin Forms和Prism,现在我的app.xaml.cs文件中有一大堆关于Unity注册的错误。另外,正如Brian在更新说明中所述,所有Unity名称空间也都被破坏了。对于下面的小片段,新的RegisterTypes方法应该是什么样的,容器类型列表中的1个应该是什么样的

此代码段用于:

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与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上看到的完整定义。

containerRegistry.RegisterType仍然不是有效语句。containerRegistry.RegisterType仍然不是有效语句。