Xamarin.forms 升级到Prism和Xamarin表单后的Unity类型注册问题
我刚刚升级了Xamarin Forms和Prism,现在我的app.xaml.cs文件中有一大堆关于Unity注册的错误。另外,正如Brian在更新说明中所述,所有Unity名称空间也都被破坏了。对于下面的小片段,新的RegisterTypes方法应该是什么样的,容器类型列表中的1个应该是什么样的 此代码段用于: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
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仍然不是有效语句。