1- using Autofac ;
2- using eShopOnContainers . Services ;
1+ using eShopOnContainers . Services ;
32using System ;
43using System . Globalization ;
54using System . Reflection ;
1615using eShopOnContainers . Core . Services . Settings ;
1716using eShopOnContainers . Core . Services . FixUri ;
1817using Xamarin . Forms ;
18+ using TinyIoC ;
1919
2020namespace eShopOnContainers . Core . ViewModels . Base
2121{
2222 public static class ViewModelLocator
2323 {
24- private static IContainer _container ;
24+ private static TinyIoCContainer _container ;
2525
2626 public static readonly BindableProperty AutoWireViewModelProperty =
2727 BindableProperty . CreateAttached ( "AutoWireViewModel" , typeof ( bool ) , typeof ( ViewModelLocator ) , default ( bool ) , propertyChanged : OnAutoWireViewModelChanged ) ;
@@ -38,62 +38,62 @@ public static void SetAutoWireViewModel(BindableObject bindable, bool value)
3838
3939 public static bool UseMockService { get ; set ; }
4040
41- public static void RegisterDependencies ( bool useMockServices )
41+ static ViewModelLocator ( )
4242 {
43- var builder = new ContainerBuilder ( ) ;
43+ _container = new TinyIoCContainer ( ) ;
4444
4545 // View models
46- builder . RegisterType < BasketViewModel > ( ) ;
47- builder . RegisterType < CatalogViewModel > ( ) ;
48- builder . RegisterType < CheckoutViewModel > ( ) ;
49- builder . RegisterType < LoginViewModel > ( ) ;
50- builder . RegisterType < MainViewModel > ( ) ;
51- builder . RegisterType < OrderDetailViewModel > ( ) ;
52- builder . RegisterType < ProfileViewModel > ( ) ;
53- builder . RegisterType < SettingsViewModel > ( ) ;
54- builder . RegisterType < CampaignViewModel > ( ) ;
55- builder . RegisterType < CampaignDetailsViewModel > ( ) ;
46+ _container . Register < BasketViewModel > ( ) ;
47+ _container . Register < CatalogViewModel > ( ) ;
48+ _container . Register < CheckoutViewModel > ( ) ;
49+ _container . Register < LoginViewModel > ( ) ;
50+ _container . Register < MainViewModel > ( ) ;
51+ _container . Register < OrderDetailViewModel > ( ) ;
52+ _container . Register < ProfileViewModel > ( ) ;
53+ _container . Register < SettingsViewModel > ( ) ;
54+ _container . Register < CampaignViewModel > ( ) ;
55+ _container . Register < CampaignDetailsViewModel > ( ) ;
5656
5757 // Services
58- builder . RegisterType < NavigationService > ( ) . As < INavigationService > ( ) . SingleInstance ( ) ;
59- builder . RegisterType < DialogService > ( ) . As < IDialogService > ( ) ;
60- builder . RegisterType < OpenUrlService > ( ) . As < IOpenUrlService > ( ) ;
61- builder . RegisterType < IdentityService > ( ) . As < IIdentityService > ( ) ;
62- builder . RegisterType < RequestProvider > ( ) . As < IRequestProvider > ( ) ;
63- builder . RegisterType < LocationService > ( ) . As < ILocationService > ( ) . SingleInstance ( ) ;
64- builder . RegisterType < Services . Dependency . DependencyService > ( ) . As < IDependencyService > ( ) ;
65- builder . RegisterType < SettingsService > ( ) . As < ISettingsService > ( ) . SingleInstance ( ) ;
66- builder . RegisterType < FixUriService > ( ) . As < FixUriService > ( ) . SingleInstance ( ) ;
58+ _container . Register < INavigationService , NavigationService > ( ) . AsSingleton ( ) ;
59+ _container . Register < IDialogService , DialogService > ( ) ;
60+ _container . Register < IOpenUrlService , OpenUrlService > ( ) ;
61+ _container . Register < IIdentityService , IdentityService > ( ) ;
62+ _container . Register < IRequestProvider , RequestProvider > ( ) ;
63+ _container . Register < ILocationService , LocationService > ( ) . AsSingleton ( ) ;
64+ _container . Register < ICatalogService , CatalogMockService > ( ) . AsSingleton ( ) ;
65+ _container . Register < IBasketService , BasketMockService > ( ) . AsSingleton ( ) ;
66+ _container . Register < IOrderService , OrderMockService > ( ) . AsSingleton ( ) ;
67+ _container . Register < IUserService , UserMockService > ( ) . AsSingleton ( ) ;
68+ _container . Register < ICampaignService , CampaignMockService > ( ) . AsSingleton ( ) ;
69+ }
6770
71+ public static void UpdateDependencies ( bool useMockServices )
72+ {
73+ // Change injected dependencies
6874 if ( useMockServices )
6975 {
70- builder . RegisterInstance ( new CatalogMockService ( ) ) . As < ICatalogService > ( ) ;
71- builder . RegisterInstance ( new BasketMockService ( ) ) . As < IBasketService > ( ) ;
72- builder . RegisterInstance ( new OrderMockService ( ) ) . As < IOrderService > ( ) ;
73- builder . RegisterInstance ( new UserMockService ( ) ) . As < IUserService > ( ) ;
74- builder . RegisterInstance ( new CampaignMockService ( ) ) . As < ICampaignService > ( ) ;
76+ _container . Register < ICatalogService , CatalogMockService > ( ) . AsSingleton ( ) ;
77+ _container . Register < IBasketService , BasketMockService > ( ) . AsSingleton ( ) ;
78+ _container . Register < IOrderService , OrderMockService > ( ) . AsSingleton ( ) ;
79+ _container . Register < IUserService , UserMockService > ( ) . AsSingleton ( ) ;
80+ _container . Register < ICampaignService , CampaignMockService > ( ) . AsSingleton ( ) ;
7581
7682 UseMockService = true ;
7783 }
7884 else
7985 {
80- builder . RegisterType < CatalogService > ( ) . As < ICatalogService > ( ) . SingleInstance ( ) ;
81- builder . RegisterType < BasketService > ( ) . As < IBasketService > ( ) . SingleInstance ( ) ;
82- builder . RegisterType < OrderService > ( ) . As < IOrderService > ( ) . SingleInstance ( ) ;
83- builder . RegisterType < UserService > ( ) . As < IUserService > ( ) . SingleInstance ( ) ;
84- builder . RegisterType < CampaignService > ( ) . As < ICampaignService > ( ) . SingleInstance ( ) ;
86+ _container . Register < ICatalogService , CatalogService > ( ) . AsSingleton ( ) ;
87+ _container . Register < IBasketService , BasketService > ( ) . AsSingleton ( ) ;
88+ _container . Register < IOrderService , OrderService > ( ) . AsSingleton ( ) ;
89+ _container . Register < IUserService , UserService > ( ) . AsSingleton ( ) ;
90+ _container . Register < ICampaignService , CampaignService > ( ) . AsSingleton ( ) ;
8591
8692 UseMockService = false ;
8793 }
88-
89- if ( _container != null )
90- {
91- _container . Dispose ( ) ;
92- }
93- _container = builder . Build ( ) ;
9494 }
9595
96- public static T Resolve < T > ( )
96+ public static T Resolve < T > ( ) where T : class
9797 {
9898 return _container . Resolve < T > ( ) ;
9999 }
0 commit comments