diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs index f9c43afc0..70759cc03 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs @@ -27,8 +27,7 @@ namespace eShopOnContainers private void InitApp() { UseMockServices = Settings.UseMocks; - ViewModelLocator.Initialize(); - ViewModelLocator.UpdateDependencies(UseMockServices); + ViewModelLocator.RegisterDependencies(UseMockServices); } private Task InitNavigation() diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs old mode 100644 new mode 100755 index c9e253a2e..90abb8f09 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs @@ -1,4 +1,4 @@ -using Microsoft.Practices.Unity; +using Autofac; using eShopOnContainers.Services; using System; using System.Globalization; @@ -16,7 +16,7 @@ namespace eShopOnContainers.Core.ViewModels.Base { public static class ViewModelLocator { - private static readonly IUnityContainer _unityContainer = new UnityContainer(); + private static IContainer _container; public static readonly BindableProperty AutoWireViewModelProperty = BindableProperty.CreateAttached("AutoWireViewModel", typeof(bool), typeof(ViewModelLocator), default(bool), propertyChanged: OnAutoWireViewModelChanged); @@ -33,56 +33,56 @@ namespace eShopOnContainers.Core.ViewModels.Base public static bool UseMockService { get; set; } - public static void Initialize() + public static void RegisterDependencies(bool useMockServices) { - // Services - _unityContainer.RegisterType(); - _unityContainer.RegisterType(new ContainerControlledLifetimeManager()); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); + var builder = new ContainerBuilder(); // View models - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - } + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + + // Services + builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As(); + builder.RegisterType().As(); + builder.RegisterType().As(); + builder.RegisterType().As(); - public static void UpdateDependencies(bool useMockServices) - { - // Change injected dependencies if (useMockServices) { - _unityContainer.RegisterInstance(new CatalogMockService()); - _unityContainer.RegisterInstance(new BasketMockService()); - _unityContainer.RegisterInstance(new OrderMockService()); - _unityContainer.RegisterInstance(new UserMockService()); + builder.RegisterInstance(new CatalogMockService()).As(); + builder.RegisterInstance(new BasketMockService()).As(); + builder.RegisterInstance(new OrderMockService()).As(); + builder.RegisterInstance(new UserMockService()).As(); UseMockService = true; } else { - var requestProvider = Resolve(); - _unityContainer.RegisterInstance(new CatalogService(requestProvider)); - _unityContainer.RegisterInstance(new BasketService(requestProvider)); - _unityContainer.RegisterInstance(new OrderService(requestProvider)); - _unityContainer.RegisterInstance(new UserService(requestProvider)); + builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); UseMockService = false; } + + if (_container != null) + { + _container.Dispose(); + } + _container = builder.Build(); } public static T Resolve() { - return _unityContainer.Resolve(); + return _container.Resolve(); } private static void OnAutoWireViewModelChanged(BindableObject bindable, object oldValue, object newValue) @@ -103,7 +103,7 @@ namespace eShopOnContainers.Core.ViewModels.Base { return; } - var viewModel = _unityContainer.Resolve(viewModelType); + var viewModel = _container.Resolve(viewModelType); view.BindingContext = viewModel; } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs index c5a58b745..7d47e882a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs @@ -71,16 +71,14 @@ namespace eShopOnContainers.Core.ViewModels private void MockServices() { - ViewModelLocator.UpdateDependencies(!UseAzureServices); + ViewModelLocator.RegisterDependencies(!UseAzureServices); UpdateInfo(); } public override Task InitializeAsync(object navigationData) { UpdateInfo(); - Endpoint = Settings.UrlBase; - return base.InitializeAsync(navigationData); } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj index c3211d837..37587b90a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj @@ -11,11 +11,11 @@ eShopOnContainers.Core eShopOnContainers.Core v4.5 - Profile259 512 {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 true @@ -169,85 +169,7 @@ - - - - - ..\..\..\..\packages\Acr.UserDialogs.6.3.3\lib\portable-win+net45+wp8+win8+wpa81\Acr.UserDialogs.dll - True - - - ..\..\..\..\packages\Acr.UserDialogs.6.3.3\lib\portable-win+net45+wp8+win8+wpa81\Acr.UserDialogs.Interface.dll - True - - - ..\..\..\..\packages\Xamarin.FFImageLoading.2.2.6-pre-256\lib\portable-net45+win8+wpa81+wp8\FFImageLoading.dll - True - - - ..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.2.6-pre-256\lib\portable-net45+win8+wpa81+wp8\FFImageLoading.Forms.dll - True - - - ..\..\..\..\packages\Xamarin.FFImageLoading.2.2.6-pre-256\lib\portable-net45+win8+wpa81+wp8\FFImageLoading.Platform.dll - True - - - ..\..\..\..\packages\IdentityModel.1.3.1\lib\portable-net45+wp80+win8+wpa81\IdentityModel.Portable.dll - True - - - ..\..\..\..\packages\Unity.4.0.1\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll - True - - - ..\..\..\..\packages\Newtonsoft.Json.9.0.2-beta1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll - True - - - ..\..\..\..\packages\Xam.Plugins.Settings.2.6.0.12-beta\lib\portable-net45+wp80+win8+wpa81\Plugin.Settings.dll - True - - - ..\..\..\..\packages\Xam.Plugins.Settings.2.6.0.12-beta\lib\portable-net45+wp80+win8+wpa81\Plugin.Settings.Abstractions.dll - True - - - ..\..\..\..\packages\SlideOverKit.2.1.4\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SlideOverKit.dll - True - - - ..\..\..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - True - - - ..\..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll - True - - - ..\..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll - True - - - ..\..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll - True - - - ..\..\..\..\packages\Xamarin.Forms.2.3.3.175\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Core.dll - True - - - ..\..\..\..\packages\Xamarin.Forms.Pages.2.3.3.175\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10\Xamarin.Forms.Pages.dll - True - - - ..\..\..\..\packages\Xamarin.Forms.2.3.3.175\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Platform.dll - True - - - ..\..\..\..\packages\Xamarin.Forms.2.3.3.175\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Xaml.dll - True - + diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/packages.config b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/packages.config deleted file mode 100644 index 5f01c8896..000000000 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/packages.config +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/project.json b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/project.json new file mode 100644 index 000000000..20f36e083 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/project.json @@ -0,0 +1,25 @@ +{ + "dependencies": { + "Acr.UserDialogs": "6.3.3", + "Autofac": "4.4.0", + "CommonServiceLocator": "1.3", + "IdentityModel": "1.3.1", + "Microsoft.Bcl": "1.1.10", + "Microsoft.Bcl.Build": "1.0.21", + "Microsoft.Net.Http": "2.2.29", + "modernhttpclient": "2.4.2", + "Newtonsoft.Json": "9.0.2-beta1", + "SlideOverKit": "2.1.4", + "Splat": "1.6.2", + "Xam.Plugins.Settings": "2.6.0.12-beta", + "Xamarin.FFImageLoading": "2.2.6-pre-256", + "Xamarin.FFImageLoading.Forms": "2.2.6-pre-256", + "Xamarin.Forms": "2.3.3.175", + "Xamarin.Forms.Pages": "2.3.3.175", + "Xamarin.Forms.Theme.Base": "1.0.0.43-pre1", + "Xamarin.Forms.Theme.Light": "1.0.0.43-pre1" + }, + "frameworks": { + ".NETPortable,Version=v4.5,Profile=Profile111": {} + } +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj index 7e9dbb852..0a02480c9 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj @@ -21,10 +21,11 @@ armeabi,armeabi-v7a,x86 - + 1G + True @@ -37,14 +38,8 @@ True None False - False - False 1G Xamarin - False - False - False - False pdbonly @@ -102,10 +97,6 @@ ..\..\..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll True - - ..\..\..\..\packages\Unity.4.0.1\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll - True - ..\..\..\..\packages\modernhttpclient.2.4.2\lib\MonoAndroid\ModernHttpClient.dll True diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config index 2f46c3e39..3d9f0c8a8 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config @@ -35,7 +35,6 @@ - diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json old mode 100644 new mode 100755 index 42f8b9552..b6c67c002 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json @@ -5,7 +5,6 @@ "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0", "Newtonsoft.Json": "9.0.1", "SlideOverKit": "2.1.4", - "Unity": "4.0.1", "Xam.Plugins.Settings": "2.6.0.12-beta", "Xamarin.FFImageLoading": "2.2.6-pre-256", "Xamarin.FFImageLoading.Forms": "2.2.6-pre-256", diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj index 99f033a1d..fa1114dd7 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj @@ -166,10 +166,6 @@ ..\..\..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll True - - ..\..\..\..\packages\Unity.4.0.1\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll - True - ..\..\..\..\packages\modernhttpclient.2.4.2\lib\Xamarin.iOS10\ModernHttpClient.dll True diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/packages.config b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/packages.config index 75be50fe1..de074af61 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/packages.config +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/packages.config @@ -11,7 +11,6 @@ -