Ejemplo n.º 1
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerRegistry.RegisterForNavigation <NavigationPage>("Nav");
            containerRegistry.RegisterForNavigation <LoginView, LoginViewModel>("Login");
            containerRegistry.RegisterForNavigation <MenuView, MenuViewModel>("Menu");
            containerRegistry.RegisterForNavigation <MainView, MainViewModel>("Main");
            //containerRegistry.RegisterForNavigation<MainView, MainViewModel>("Main");
            //containerRegistry.RegisterForNavigation<RegisterView, RegisterViewModel>("Register");
            //containerRegistry.RegisterForNavigation<SubmitSosRequestView, SubmitSosRequestViewModel>("SubmitSosRequest");
            //containerRegistry.RegisterForNavigation<MySosRequestsView, MySosRequestsViewModel>("MySosRequests");
            //containerRegistry.RegisterForNavigation<MenuView, MenuViewModel>("Menu");

            containerRegistry.GetBuilder().Register <IClientAppProfile>(c => new DefaultClientAppProfile
            {
                HostUri = new Uri("http://localhost:53148/"),       // Local
                //HostUri = new Uri("http://84.241.25.3:8220/"),            // Server
                // OAuthRedirectUri = new Uri("Test://oauth2redirect"),
                AppName    = "Sanaap",
                ODataRoute = "odata/Sanaap/"
            }).SingleInstance();

            containerRegistry.RegisterRequiredServices();
            containerRegistry.RegisterHttpClient();
            containerRegistry.RegisterODataClient();
            containerRegistry.RegisterIdentityClient();

            containerRegistry.Register <ISanaapOperatorAppLoginValidator, SanaapOperatorAppLoginValidator>();
            containerRegistry.RegisterSingleton <ISanaapAppTranslateService, SanaapAppTranslateService>();

            base.RegisterTypes(containerRegistry);
        }
Ejemplo n.º 2
0
        public static IContainerRegistry RegisterODataClient(this IContainerRegistry containerRegistry)
        {
            if (containerRegistry == null)
            {
                throw new ArgumentNullException(nameof(containerRegistry));
            }

            Simple.OData.Client.V4Adapter.Reference();

            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerBuilder.Register(c =>
            {
                HttpMessageHandler authenticatedHttpMessageHandler = c.ResolveNamed <HttpMessageHandler>(ContractKeys.AuthenticatedHttpMessageHandler);

                IClientAppProfile clientAppProfile = c.Resolve <IClientAppProfile>();

                IODataClient odataClient = new ODataClient(new ODataClientSettings(new Uri(clientAppProfile.HostUri, clientAppProfile.ODataRoute))
                {
                    RenewHttpConnection    = false,
                    OnCreateMessageHandler = () => authenticatedHttpMessageHandler
                });

                return(odataClient);
            }).PreserveExistingDefaults();

            containerBuilder
            .Register(c => new ODataBatch(c.Resolve <IODataClient>(), reuseSession: true))
            .PreserveExistingDefaults();

            return(containerRegistry);
        }
Ejemplo n.º 3
0
        public virtual void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerBuilder.Register(c => (Activity)_activity).SingleInstance().PreserveExistingDefaults();
            containerBuilder.Register(c => (Context)_activity).SingleInstance().PreserveExistingDefaults();
        }
Ejemplo n.º 4
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            var autofacContainer = containerRegistry.GetBuilder();

            RegisterRest(autofacContainer);
            RegistreVies(containerRegistry);
        }
Ejemplo n.º 5
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerRegistry.RegisterForNav <NavigationPage>("Nav");
            containerRegistry.RegisterForNav <XamAppMasterDetailView, XamAppMasterDetailViewModel>("MasterDetail");
            containerRegistry.RegisterForNav <HelloWorldView, HelloWorldViewModel>("HelloWorld");
            containerRegistry.RegisterForNav <HelloWorldMultiLanguageView, HelloWorldViewModel>("HelloWorldMultiLanguage");
            containerRegistry.RegisterForNav <LoginView, LoginViewModel>("Login");
            containerRegistry.RegisterForNav <IntroView, IntroViewModel>("Intro");
            containerRegistry.RegisterForNav <ProductsView, ProductsViewModel>("Products");
            containerRegistry.RegisterForNav <ProductDetailView, ProductDetailViewModel>("ProductDetail");

            containerRegistry.RegisterForNav <MelkradarView, MelkradarViewMode>("ActivationPage");
            containerRegistry.RegisterForNav <ServiceItemsView, ServiceItemsViewModel>("ServiceItems");

            containerRegistry.RegisterForNav <DataPagerView, DataPagerViewModel>("DataPager");

            containerRegistry.RegisterForNav <GridLayoutView, GridLayoutViewModel>("GridLayout");
            containerRegistry.RegisterForNav <FlexLayoutView, FlexLayoutViewModel>("FlexLayout");
            containerRegistry.RegisterForNav <StackLayoutView, StackLayoutViewModel>("StackLayout");



            containerBuilder.Register <IClientAppProfile>(c => new DefaultClientAppProfile
            {
                AppName = "XamApp",
            }).SingleInstance();

            containerBuilder.RegisterRequiredServices();

            containerBuilder.RegisterInstance(UserDialogs.Instance);

            base.RegisterTypes(containerRegistry);
        }
 public static void RegisterForNav <TView, TViewModel>(this IContainerRegistry containerRegistry, string name = null)
     where TView : Page
     where TViewModel : class
 {
     containerRegistry.RegisterForNavigation <TView, TViewModel>(name);
     containerRegistry.GetBuilder().RegisterType <TViewModel>().PropertiesAutowired(PropertyWiringOptions.PreserveSetValues);
 }
Ejemplo n.º 7
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerBuilder.Register(c => Container).SingleInstance().PreserveExistingDefaults();
            containerBuilder.Register(c => Container.GetContainer()).PreserveExistingDefaults();
            containerRegistry.RegisterPopupNavigationService();
        }
Ejemplo n.º 8
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterForNavigation <NavigationPage>();
            containerRegistry.RegisterForNavigation <MainPage>();

            containerRegistry.GetBuilder().InjectServices();
            containerRegistry.RegisterForNavigation <CadastroInteresseColetaPage>();
            containerRegistry.RegisterForNavigation <CadastroPontoColetaPage>();
        }
        public static IContainerRegistry RegisterPartialView <TPartialView, TPartialViewModel>(this IContainerRegistry containerRegistry)
            where TPartialView : TemplatedView
            where TPartialViewModel : BitViewModelBase
        {
            ViewModelLocationProvider.Register <TPartialView>(() => containerRegistry.GetContainer().Resolve <TPartialViewModel>());
            containerRegistry.GetBuilder().RegisterType <TPartialViewModel>().AsSelf().PropertiesAutowired(PropertyWiringOptions.PreserveSetValues);

            return(containerRegistry);
        }
Ejemplo n.º 10
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterForNavigation <NavigationPage>("Nav");

            containerRegistry.RegisterForNavigation <LoginView, LoginViewModel>("Login");
            containerRegistry.RegisterForNavigation <MainView, MainViewModel>("Main");

            containerRegistry.GetBuilder().Register <IClientAppProfile>(c => new DefaultClientAppProfile
            {
                HostUri = new Uri("http://192.168.1.60/"),
                //HostUri = new Uri("http://127.0.0.1/"),
                //HostUri = new Uri("http://10.0.2.2"),
                OAuthRedirectUri = new Uri("Test://oauth2redirect"),
                AppName          = "Test",
                ODataRoute       = "odata/Test/"
            }).SingleInstance();

            containerRegistry.RegisterRequiredServices();
            containerRegistry.RegisterHttpClient();
            containerRegistry.RegisterODataClient();
            containerRegistry.RegisterIdentityClient();

            containerRegistry.Register <SampleDbContext>();

            containerRegistry.GetBuilder().Register(c =>
            {
                ISyncService syncService = new DefaultSyncService <SampleDbContext>(c.Resolve <IContainerProvider>());

                syncService.AddDtoSetSyncConfig(new DtoSetSyncConfig
                {
                    DtoSetName    = nameof(SampleDbContext.TestCustomers),
                    OnlineDtoSet  = odataClient => odataClient.For(nameof(SampleDbContext.TestCustomers)),
                    OfflineDtoSet = dbContext => dbContext.Set <TestCustomerDto>()
                });

                return(syncService);
            }).SingleInstance();

            containerRegistry.RegisterPopupService();

            containerRegistry.RegisterForPopup <TestView, TestViewModel>("Test");

            base.RegisterTypes(containerRegistry);
        }
Ejemplo n.º 11
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterForNavigation <NavigationPage>("Nav");

            containerRegistry.RegisterForNavigation <LoginView, LoginViewModel>("Login");
            containerRegistry.RegisterForNavigation <MainView, MainViewModel>("Main");

            Simple.OData.Client.V4Adapter.Reference();

            containerRegistry.GetBuilder().Register(c =>
            {
                ISecurityService securityService = c.Resolve <ISecurityService>();
                ODataClient odataClient          = new ODataClient(new ODataClientSettings(new Uri(c.Resolve <IConfigProvider>().HostUri, "odata/Test/"))
                {
                    OnCreateMessageHandler = () => new TokenHandler(securityService, new HttpClientHandler())
                });
                return(odataClient);
            });

            containerRegistry.GetBuilder().Register(c =>
            {
                ISecurityService securityService = c.Resolve <ISecurityService>();
                HttpClient httpClient            = new HttpClient(new TokenHandler(securityService, new HttpClientHandler()))
                {
                    BaseAddress = c.Resolve <IConfigProvider>().HostUri
                };
                return(httpClient);
            }).SingleInstance();

            containerRegistry.GetBuilder().Register(c =>
            {
                IConfigProvider configProvider = c.Resolve <IConfigProvider>();
                return(new TokenClient(address: new Uri(configProvider.HostUri, "core/connect/token").ToString(), clientId: configProvider.OAuthResourceOwnerFlowClientId, clientSecret: configProvider.OAuthResourceOwnerFlowSecret));
            }).SingleInstance();

            containerRegistry.RegisterSingleton <BitOAuth2Authenticator>();
            containerRegistry.RegisterSingleton <OAuthLoginPresenter>();
            containerRegistry.RegisterSingleton <ISecurityService, DefaultSecurityService>();
            containerRegistry.RegisterSingleton <IConfigProvider, TestConfigProvider>();
            containerRegistry.RegisterSingleton <IDateTimeProvider, DefaultDateTimeProvider>();

            containerRegistry.GetBuilder().Register(c => AccountStore.Create()).SingleInstance();
        }
Ejemplo n.º 12
0
        public override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerBuilder.RegisterType <iOSAppVersionService>()
            .As <IAppVersionService>()
            .PropertiesAutowired(PropertyWiringOptions.PreserveSetValues);

            base.RegisterTypes(containerRegistry);
        }
Ejemplo n.º 13
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerRegistry.Register <ILoggerFacade, BitPrismLogger>();
            containerBuilder.Register(c => Container).SingleInstance().PreserveExistingDefaults();
            containerBuilder.Register(c => Container.GetContainer()).PreserveExistingDefaults();
            containerRegistry.RegisterPopupNavigationService();
            containerBuilder.Register <IAdaptiveBehaviorService>(c => this).SingleInstance().PreserveExistingDefaults();
        }
Ejemplo n.º 14
0
        //TODO: half mozzarella half pepperoni
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            var builder = containerRegistry.GetBuilder();

            builder.RegisterModule(new ApplicationModule());

            containerRegistry.RegisterForNavigation <AppNavigationPage>("Go");
            containerRegistry.RegisterForNavigation <MainPage, MainViewModel>("Home");
            containerRegistry.RegisterForNavigation <OnboardingPage, OnboardingViewModel>("Onboarding");
            containerRegistry.RegisterForNavigation <SearchPage, SearchViewModel>("Search");
            containerRegistry.RegisterForNavigation <NowPlayingPage, NowPlayingViewModel>("NowPlaying");
        }
Ejemplo n.º 15
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.GetBuilder().Register((arg) =>
            {
                var fileService = arg.Resolve <IFileService>();
                var dbPath      = fileService.GetDbPath();
                return(new AchievementsContext(dbPath));
            });

            containerRegistry.RegisterForNavigation <NavigationPage>();
            containerRegistry.RegisterForNavigation <MainPage>();
        }
Ejemplo n.º 16
0
        protected sealed override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            IServiceCollection services = new BitServiceCollection();

            containerBuilder.Properties[nameof(services)]         = services;
            containerBuilder.Properties[nameof(containerBuilder)] = containerBuilder;

            RegisterTypes(containerRegistry, containerBuilder, services);

            containerBuilder.Populate(services);
        }
Ejemplo n.º 17
0
        public static IContainerRegistry RegisterRequiredServices(this IContainerRegistry containerRegistry)
        {
            if (containerRegistry == null)
            {
                throw new ArgumentNullException(nameof(containerRegistry));
            }

            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerBuilder.RegisterType <DefaultDateTimeProvider>().As <IDateTimeProvider>().SingleInstance().PreserveExistingDefaults();

            return(containerRegistry);
        }
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerRegistry = containerRegistry;
            var containerBuilder = containerRegistry.GetBuilder();

            containerBuilder.RegisterAssemblyModules(typeof(App).Assembly);
            containerRegistry.RegisterForNavigation <NavigationPage>();
            containerRegistry.RegisterForNavigation <MainPage, MainPageViewModel>();
            containerRegistry.RegisterForNavigation <LayoutsPageMain, LayoutsPageMainViewModel>();
            containerRegistry.RegisterForNavigation <Views.Layouts.StackLayout, StackLayoutViewModel>();

            containerRegistry.RegisterForNavigation <ComponentsMain, ComponentsMainViewModel>();
            containerRegistry.RegisterForNavigation <Modal, ModalViewModal>();
            containerRegistry.RegisterForNavigation <ModalDetails, ModalDetailsViewModal>();
        }
Ejemplo n.º 19
0
        public static IContainerRegistry RegisterPopupService(this IContainerRegistry containerRegistry)
        {
            if (containerRegistry == null)
            {
                throw new ArgumentNullException(nameof(containerRegistry));
            }

            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerBuilder
            .Register <IPopupNavigation>(c => PopupNavigation.Instance)
            .PreserveExistingDefaults();

            containerBuilder.RegisterType <DefaultPopupNavigationService>().As <IPopupNavigationService>().SingleInstance().PreserveExistingDefaults();

            return(containerRegistry);
        }
Ejemplo n.º 20
0
        protected sealed override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            IServiceCollection services = new BitServiceCollection();

            containerBuilder.Properties[nameof(services)]          = services;
            containerBuilder.Properties[nameof(containerRegistry)] = containerRegistry;

            AutofacDependencyManager dependencyManager = new AutofacDependencyManager();

            dependencyManager.UseContainerBuilder(containerBuilder);
            ((IServiceCollectionAccessor)dependencyManager).ServiceCollection = services;

            RegisterTypes(dependencyManager, containerRegistry, containerBuilder, services);

            containerBuilder.Populate(services);
        }
Ejemplo n.º 21
0
        public static IContainerRegistry RegisterIdentityClient(this IContainerRegistry containerRegistry)
        {
            if (containerRegistry == null)
            {
                throw new ArgumentNullException(nameof(containerRegistry));
            }

            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerBuilder.RegisterType <DefaultSecurityService>().As <ISecurityService>().SingleInstance().PreserveExistingDefaults();

            containerBuilder.Register((c, parameters) =>
            {
                return(new TokenClient(address: new Uri(c.Resolve <IClientAppProfile>().HostUri, "core/connect/token").ToString(), clientId: parameters.Named <string>("clientId"), clientSecret: parameters.Named <string>("secret"), innerHttpMessageHandler: c.ResolveNamed <HttpMessageHandler>(ContractKeys.DefaultHttpMessageHandler)));
            }).PreserveExistingDefaults();

            return(containerRegistry);
        }
Ejemplo n.º 22
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerRegistry.RegisterForNav <NavigationPage>("Nav");

            containerRegistry.RegisterForNav <CodeVerifyView, CodeVerifyViewModel>("Code");
            containerRegistry.RegisterForNav <ServiceItemsView, ServiceItemsViewModel>("ServiceItems");

            containerBuilder.Register <IClientAppProfile>(c => new DefaultClientAppProfile
            {
                AppName = "XamApp",
            }).SingleInstance();

            containerBuilder.RegisterRequiredServices();

            containerBuilder.RegisterInstance(UserDialogs.Instance);

            base.RegisterTypes(containerRegistry);
        }
        public void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            AutofacDependencyManager?dependencyManager;

            if (containerBuilder.Properties.TryGetValue(nameof(dependencyManager), out object?dependencyManagerObj))
            {
                dependencyManager = (AutofacDependencyManager)dependencyManagerObj !;
            }
            else
            {
                dependencyManager = new AutofacDependencyManager();
                dependencyManager.UseContainerBuilder(containerBuilder);
                containerBuilder.Properties[nameof(dependencyManager)] = dependencyManager;
            }

            IServiceCollection?services;

            if (containerBuilder.Properties.TryGetValue(nameof(services), out object?servicesObj))
            {
                services = (IServiceCollection)servicesObj !;
            }
            else
            {
                services = new BitServiceCollection();
                containerBuilder.Properties[nameof(services)] = services;
                ((IServiceCollectionAccessor)dependencyManager).ServiceCollection = services;
            }

            containerBuilder.Properties[nameof(containerRegistry)] = containerRegistry;

#if Android
            containerBuilder.Register(c => (Activity)_activity).SingleInstance().PreserveExistingDefaults();
            containerBuilder.Register(c => (Context)_activity).SingleInstance().PreserveExistingDefaults();
#endif

            RegisterTypes(dependencyManager, containerRegistry, containerBuilder, services);
        }
Ejemplo n.º 24
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerRegistry.RegisterForNav <NavigationPage>("Nav");
            containerRegistry.RegisterForNav <XamAppMasterDetailView, XamAppMasterDetailViewModel>("MasterDetail");
            containerRegistry.RegisterForNav <HelloWorldView, HelloWorldViewModel>("HelloWorld");
            containerRegistry.RegisterForNav <HelloWorldMultiLanguageView, HelloWorldViewModel>("HelloWorldMultiLanguage");
            containerRegistry.RegisterForNav <LoginView, LoginViewModel>("Login");
            containerRegistry.RegisterForNav <IntroView, IntroViewModel>("Intro");
            containerRegistry.RegisterForNav <ProductsView, ProductsViewModel>("Products");

            containerBuilder.Register <IClientAppProfile>(c => new DefaultClientAppProfile
            {
                AppName = "XamApp",
            }).SingleInstance();

            containerBuilder.RegisterRequiredServices();

            containerBuilder.RegisterInstance(UserDialogs.Instance);

            base.RegisterTypes(containerRegistry);
        }
Ejemplo n.º 25
0
        public static IContainerRegistry RegisterHttpClient <THttpMessageHandler>(this IContainerRegistry containerRegistry)
            where THttpMessageHandler : HttpMessageHandler, new()
        {
            if (containerRegistry == null)
            {
                throw new ArgumentNullException(nameof(containerRegistry));
            }

            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            containerBuilder
            .RegisterType <THttpMessageHandler>()
            .Named <HttpMessageHandler>(ContractKeys.DefaultHttpMessageHandler)
            .SingleInstance()
            .PreserveExistingDefaults();

            containerBuilder.Register <HttpMessageHandler>(c =>
            {
                return(new AuthenticatedHttpMessageHandler(c.Resolve <IEventAggregator>(), c.Resolve <ISecurityService>(), c.ResolveNamed <HttpMessageHandler>(ContractKeys.DefaultHttpMessageHandler)));
            })
            .Named <HttpMessageHandler>(ContractKeys.AuthenticatedHttpMessageHandler)
            .SingleInstance()
            .PreserveExistingDefaults();

            containerBuilder.Register(c =>
            {
                HttpMessageHandler authenticatedHttpMessageHandler = c.ResolveNamed <HttpMessageHandler>(ContractKeys.AuthenticatedHttpMessageHandler);
                HttpClient httpClient = new HttpClient(authenticatedHttpMessageHandler)
                {
                    BaseAddress = c.Resolve <IClientAppProfile>().HostUri
                };
                return(httpClient);
            }).SingleInstance()
            .PreserveExistingDefaults();

            return(containerRegistry);
        }
Ejemplo n.º 26
0
 public virtual void RegisterTypes(IContainerRegistry containerRegistry)
 {
     containerRegistry.GetBuilder().RegisterType <DefaultBrowserService>().As <IBrowserService>().PreserveExistingDefaults();
 }
Ejemplo n.º 27
0
        public override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ContainerBuilder containerBuilder = containerRegistry.GetBuilder();

            base.RegisterTypes(containerRegistry);
        }
Ejemplo n.º 28
0
 protected override void RegisterTypes(IContainerRegistry containerRegistry)
 {
     containerRegistry.GetBuilder().Register <IContainerProvider>(c => Container).SingleInstance().PreserveExistingDefaults();
 }
Ejemplo n.º 29
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            var builder = containerRegistry.GetBuilder();

            AutofacConfig.Configure(builder, _configuration);
        }
Ejemplo n.º 30
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            // Register the Popup Plugin Navigation Service
            containerRegistry.RegisterPopupNavigationService();
            containerRegistry.RegisterInstance(CreateLogger());

#if (UseRealm)
            //var serverURL = new Uri(Secrets.RealmServer);
            //var config = new SyncConfiguration(User.Current, serverURL);
            var config = RealmConfiguration.DefaultConfiguration;
    #if (AutofacContainer)
            containerRegistry.GetBuilder().Register(ctx => Realm.GetInstance(config)).As<Realm>().InstancePerDependency();
    #elseif (DryIocContainer)
            containerRegistry.GetContainer().Register(reuse: Reuse.Transient,
                               made: Made.Of(() => Realm.GetInstance(config)),
                               setup: Setup.With(allowDisposableTransient: true));
    #else
            containerRegistry.GetContainer().RegisterType<Realm>(new InjectionFactory(c => Realm.GetInstance(config)));
    #endif

#endif
#if (UseAzureMobileClient)
            containerRegistry.RegisterSingleton(typeof(ICloudTable<>), typeof(AzureCloudTable<>));
            containerRegistry.RegisterSingleton(typeof(ICloudSyncTable<>), typeof(AzureCloudSyncTable<>));
    #if (NoAuth)
            containerRegistry.RegisterInstance<IMobileServiceClient>(new MobileServiceClient(Secrets.AppServiceEndpoint));
    #else
    #if (AADAuth || AADB2CAuth)
            containerRegistry.RegisterInstance<IPublicClientApplication>(
                new PublicClientApplication(Secrets.AuthClientId, AppConstants.Authority)
                {
                    RedirectUri = AppConstants.RedirectUri
                });

        #if (AutofacContainer)
            containerRegistry.GetBuilder().RegisterType<AppDataContext>().As<IAppDataContext>().As<ICloudAppContext>().SingleInstance();
        #elseif (DryIocContainer)
            containerRegistry.GetContainer().RegisterMany<AppDataContext>(reuse: Reuse.Singleton,
                                                   serviceTypeCondition: type => 
                                                        type == typeof(IAppDataContext) ||
                                                        type == typeof(ICloudAppContext));
        #elseif (NinjectContainer)
            containerRegistry.GetContainer().Bind<IAppDataContext, ICloudAppContext>().To<AppDataContext>().InSingletonScope();
        #elseif (UnityContainer)
            containerRegistry.GetContainer().RegisterType<AppDataContext>(new ContainerControlledLifetimeManager());
            containerRegistry.GetContainer().RegisterType<IAppDataContext>(new InjectionFactory(c => c.Resolve<AppDataContext>()));
            containerRegistry.GetContainer().RegisterType<ICloudAppContext>(new InjectionFactory(c => c.Resolve<AppDataContext>()));
        #endif
    #endif
            containerRegistry.RegisterSingleton<IAzureCloudServiceOptions, AppServiceContextOptions>();
        #if (AutofacContainer)
            containerRegistry.GetBuilder().RegisterType<AppDataContext>().As<IAppDataContext>().As<ICloudService>().SingleInstance();
            containerRegistry.GetBuilder().Register(ctx => ctx.Resolve<ICloudService>().Client).As<IMobileServiceClient>().SingleInstance();
        #elseif (DryIocContainer)
            containerRegistry.GetContainer().RegisterMany<AppDataContext>(reuse: Reuse.Singleton,
                                                   serviceTypeCondition: type => 
                                                        type == typeof(IAppDataContext) ||
                                                        type == typeof(ICloudService));
            containerRegistry.GetContainer().RegisterDelegate<IMobileServiceClient>(factoryDelegate: r => r.Resolve<ICloudService>().Client,
                                                             reuse: Reuse.Singleton,
                                                             setup: Setup.With(allowDisposableTransient: true));
        #elseif (NinjectContainer)
            containerRegistry.Bind<IAppDataContext, ICloudService>().To<AppDataContext>().InSingletonScope();
            containerRegistry.Bind<IMobileServiceClient>().ToMethod(c => containerRegistry.Get<ICloudService>().Client).InSingletonScope();
        #elseif (UnityContainer)
            containerRegistry.GetContainer().RegisterType<IAppDataContext>(new InjectionFactory(c => c.Resolve<AppDataContext>()));
            containerRegistry.GetContainer().RegisterType<ICloudService>(new InjectionFactory(c => c.Resolve<AppDataContext>()));
            containerRegistry.GetContainer().RegisterType<IMobileServiceClient>(new InjectionFactory(c => c.Resolve<ICloudService>().Client));
        #endif

            containerRegistry.RegisterSingleton<ILoginProvider<AADAccount>, LoginProvider>();

#endif
#if (IncludeBarcodeService)
            // NOTE: Uses a Popup Page to contain the Scanner. You can optionally register 
            // the ContentPageBarcodeScannerService if you prefer a full screen approach.
            containerRegistry.RegisterSingleton<IBarcodeScannerService, PopupBarcodeScannerService>();
#endif
#if (UseAcrDialogs)
            containerRegistry.RegisterInstance<IUserDialogs>(UserDialogs.Instance);
#endif

            // Navigating to "TabbedPage?createTab=ViewA&createTab=ViewB&createTab=ViewC will generate a TabbedPage
            // with three tabs for ViewA, ViewB, & ViewC
            // Adding `selectedTab=ViewB` will set the current tab to ViewB
            containerRegistry.RegisterForNavigation<TabbedPage>();
            containerRegistry.RegisterForNavigation<NavigationPage>();
            containerRegistry.RegisterForNavigation<MainPage>();
#if (!Empty)
            containerRegistry.RegisterForNavigation<SplashScreenPage>();
            containerRegistry.RegisterForNavigation<TodoItemDetail>();
#endif
        }