Регистрация и разрешение контейнеров в Prism 7 - UWP - PullRequest
0 голосов
/ 24 октября 2018

Я перевожу существующее приложение UWP из Prism 6.3 в Prism 7.1.Появилось много изменений, в том числе как зарегистрировать и разрешить DI.

С помощью призмы 6.3 я делал это:

Container.RegisterType<IToastNotificationsService, ToastNotificationsService>(new ContainerControlledLifetimeManager());
Container.RegisterInstance<IResourceLoader>(new ResourceLoaderAdapter(new ResourceLoader()));

Теперь, с помощью Призмы 7.1, я нашел, как зарегистрироваться с помощью этих строк:

RegisterTypeIfMissing(typeof(IToastNotificationsService), typeof(ToastNotificationsService), true);
Container.RegisterInstance(typeof(IResourceLoader), "ResourceLoader", new ResourceLoaderAdapter(new ResourceLoader()), new ContainerControlledLifetimeManager());

Но мне не удается использовать метод разрешения.На данный момент я использую это так:

await Resolve(typeof(IToastNotificationsService)).ShowToastNotificationSample();

Но у меня есть такого рода ошибки:

Ошибка CS1061 «объект» не содержит определения для «ShowToastNotificationSample»'и не найден доступный метод расширения' ShowToastNotificationSample ', принимающий первый аргумент типа' объект '(отсутствует директива using или ссылка на сборку?)

Есть ли у вас какие-либо идеи о том, какрешить это чисто?

1 Ответ

0 голосов
/ 25 октября 2018

Prism для UWP еще не выпустил стабильную версию или превью, представляющие новую платформу.Хотя мы надеемся, что это будет в ближайшем будущем.Если вы хотите попробовать новый API, вы можете взглянуть на приложение Sandbox и использовать пакеты CI.

Мы находимся в процессе обновления документов, однако все платформы Prism, включаяWPF, Xamarin.Forms и UWP используют общие абстракции IOC.Эти абстракции охватывают наиболее распространенные задачи:

  • Регистрация временных служб (Register<T, TImp>)
  • Регистрация служб Singleton (RegisterSingleton<T, TImp>)
  • Регистрация экземпляра (RegisterInstance<T>(T))

У вас, конечно, есть возможность вызвать метод расширения GetContainer() для извлечения вашего контейнера независимо от того, используете ли вы Unity или DryIoc, и в этом случае вы можете продолжить работу с API, специфичными для контейнера.

...