Как получить доступ к IMvxLog во время запуска iOS приложения - PullRequest
0 голосов
/ 14 июля 2020

Я использую MvvmCross (6) для приложения Xamarin Forms. Мне нужно вести журналы диагностики c во время запуска.

Служба IMvxLog должна быть разрешена через Mvx.IoCProvider. Однако IoCProvider еще не доступен в WillFinishLaunching или FinishedLaunching (синглтон равен нулю).

Каков ожидаемый механизм MvvmCross для записи в файл журнала во время этих методов?

1 Ответ

0 голосов
/ 16 июля 2020

MvvmCross инициализирует Io C Provider в методе InitializePrimary (), определенном в MvxSetup (https://github.com/MvvmCross/MvvmCross/blob/44a37969059a81f26883c193a5ecf7f2ec88c9d8/MvvmCross/Core/MvxSetup.cs#L70)

После стека вызовов оттуда этот метод в конечном итоге вызывается косвенно этой строкой в ​​методе FinishedLaunching:

MvxIosSetupSingleton.EnsureSingletonAvailable(this, Window).EnsureInitialized()

Таким образом, самая ранняя точка, в которой вы можете получить доступ к службе IMvxLog через поставщика Io C, находится в FinishedLaunching после вызова метода base.FinishedLaunching ().

Похоже, UIWindow является зависимостью для инициализации MvvmCross, поэтому вы не сможете переместить встроенную инициализацию Io C раньше этого. Возможно, вам потребуется инициализировать объект вручную, а затем зарегистрировать этот экземпляр после инициализации Io C

...