我刚刚升级了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>();
答案 0 :(得分:2)
您将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的完整定义。