我只是升级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的完整定义。