Моей целью было загрузить одну из моих служб данных до остальной части приложения (видимый пользовательский интерфейс).
Мои настройки MVVMlight были довольно хороши, прежде чем пытаться предварительно загрузить мою службу данных.
- ViewModelLocator инициализируется в App.Xaml.
- ViewModels и DataServices зарегистрированы и работают нормально.
В моем App.xaml.cs основной вид загружается следующим образом.
var mainWindow = new View.MainWindow();
mainWindow.Show();
Для предварительной загрузки моей службы данных я установил для своей службы данных значение createInstanceImmediately, а затем добавил следующий код чуть выше кода mainWindow.
DataService dataService = SimpleIoc.Default.GetInstance<IDataService>();
Эта строка создает исключение "CommonServiceLocator.ActivationException: 'Тип не найден в кэше: Namespace.IDataService.'"
Если переместить эту строку ниже кода mainWindow, она работает просто отлично.
Моей первой мыслью было, что это проблема синхронизации, но если я добавлю задержку, я все равно получу ошибку. Таким образом, кажется, что ресурс приложения не загружается до тех пор, пока не будет загружено представление. Я бы не подумал, что это так, поскольку app.xaml и app.xaml.cs действительно являются частью одного класса. Несмотря на это, я не уверен, как обойти это, или если я даже могу.
Почему ViewModelLocator не загружается без представления? Есть ли способ заставить его загрузить ресурс приложения вручную? Или есть лучший способ?