Я переписываю свое ванильное приложение Xamarin для использования библиотеки Prism.
Текущее приложение использует Azure ADB2 C для авторизации с использованием этой платформы .
Android необходимо установить родительское окно, что достигается добавлением этого кода в файл MainActivity.cs проекта Android:
var authenticationService = DependencyService.Get<IAuthenticationService>();
authenticationService.SetParent(this);
Это не работает для приложения Prism, authenticationService нулевой. Для записи используемым здесь DependencyService является Xamarin.Forms.DependencyService.
Я также попробовал пример из Prism docs и поместил этот код в AndroidInitializer:
public void RegisterTypes(IContainerRegistry container)
{
// Register any platform specific implementations
container.RegisterSingleton<IAuthenticationService, B2CAuthenticationService>("B2CAuthenticationService");
var authService = Container.Resolve<IAuthenticationService>();
authService.SetParent(this);
}
В этом коде контейнер (который является контейнером DryIo C) не имеет определения для разрешения.
Для полноты, это мой App.cs RegisterTypes:
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IAuthenticationService, B2CAuthenticationService>();
...
...
}