public static IIocService AddDeviceServices(this IIocService iocService)
 {
     iocService.RegisterImplementation <IDeviceInfoService, DeviceInfoService>(IocLifetime.Singleton);
     iocService.RegisterImplementation <IApplicationInfoService, ApplicationInfoService>();
     iocService.RegisterImplementation <ISecureStorageService, SecureStorageService>();
     return(iocService);
 }
 public static IIocService AddGeolocation(this IIocService iocService)
 {
     iocService.RegisterImplementation <IGeolocationService, GeolocationService>(IocLifetime.Singleton);
     iocService.RegisterImplementation <IGeolocationProxy, XamarinEssentialsGeolocationProxy>();
     iocService.RegisterImplementation <IReactiveSchedulers, ReactiveSchedulers>();
     return(iocService);
 }
        /// <summary>
        /// A singleton object cannot depend on a scoped object because it "captures" the scoped object and may access
        /// if after the scope closes and destroys the object.  To prevent this we eliminate the scope for a singleton
        /// evaluation and then put it back in case the singleton is part of a multiple object activation
        /// </summary>
        private IIocService ExchangeRequestScope(IBindingRequest request, IIocService newScope)
        {
            var ret = request.IocService;

            request.IocService = newScope;
            return(ret);
        }
Ejemplo n.º 4
0
        public static IIocService RegisterConsoleLoggerClientService(this IIocService iocService)
        {
            iocService.RegisterImplementation <ITraceProxy, TraceProxy>(IocLifetime.Singleton);
            iocService.RegisterImplementation <IConsoleLogger, ConsoleLogger>(IocLifetime.Singleton);
            iocService.RegisterImplementation <IAnalyticsService, ConsoleLoggerService>(IocLifetime.Singleton);

            return(iocService);
        }
        private static IRootNavigationWindow VisibleMainWindow(IIocService root)
        {
            var ret = root.Get <IRootNavigationWindow>();

            ret.Show();
            TryToNavigateToHomeViewModel(root, ret);
            return(ret);
        }
Ejemplo n.º 6
0
        private static RootNavigationWindow VisibleMainWindow(IIocService root)
        {
            var ret = root.Get <RootNavigationWindow>();

            ret.Show();
            ((INavigationWindow)ret.DataContext).NavigateTo(root.Get <HomeScreenViewModel>());
            return(ret);
        }
        public static IIocService AddHttpClientHolder <TConfig>(this IIocService iocService) where TConfig : class, IGraphqlClientConfig
        {
            iocService.RegisterAccessToken();
            iocService.RegisterImplementation <IGraphqlClientConfig, TConfig>(IocLifetime.Singleton);
            iocService.RegisterImplementation <IHttpClientFactory, HttpClientHolder>(IocLifetime.Singleton);

            return(iocService);
        }
Ejemplo n.º 8
0
 public static IIocService AddDeviceServices(this IIocService iocService)
 {
     iocService.RegisterInstance <IRuntimePlatform>(RuntimePlatform.UWP);
     iocService.RegisterImplementation <IDeviceInfoService, UwpDeviceInfoService>(IocLifetime.Singleton);
     iocService.RegisterImplementation <IApplicationInfoService, ApplicationInfoService>();
     iocService.RegisterImplementation <ISecureStorageService, SecureStorageService>();
     return(iocService);
 }
 public static IIocService AddDeviceServices(this IIocService iocService)
 {
     iocService.RegisterImplementation <IApplicationInfoService, ApplicationInfoService>();
     iocService.RegisterImplementation <ISecureStorageService, SecureStorageService>();
     iocService.RegisterImplementation <IThreadService, ThreadService>();
     iocService.RegisterImplementation <IConnectivityService, ConnectivityService>();
     iocService.RegisterImplementation <IDevicePermissionsService, DevicePermissionsService>();
     return(iocService);
 }
Ejemplo n.º 10
0
 CreateNetworkVariableServer(IIocService ioc, IBindingRequest br)
 {
     return((r, w) =>
     {
         var dict = ioc.Get <BinaryObjectDictionary>();
         return new NetworkVariableServer(ioc.Get <IVariableCache>(),
                                          new BinaryObjectPipeReader(r, dict), new BinaryObjectPipeWriter(w, dict));
     });
 }
Ejemplo n.º 11
0
        private static App Application(IIocService root)
        {
            var application = root.Get <App>();

            application.AttachDiRoot(new DiBridge(root));
            application.InitializeComponent();
            application.MainWindow = VisibleMainWindow(root);
            return(application);
        }
 private static void TryToNavigateToHomeViewModel(IIocService root, IRootNavigationWindow ret)
 {
     if (ret.DataContext is INavigationWindow window &&
         root.CanGet <IHomeViewModelFactory>() &&
         CreateHomeViewModel(root) is {} home)
     {
         window.NavigateTo(home);
     }
 }
 private static IIocService AddClient <TConfig, THandler>(this IIocService iocService)
     where TConfig : class, IPushNotificationsClientConfig
     where THandler : class, IPushNotificationTapHandler
 {
     iocService.RegisterType <THandler>(IocLifetime.Singleton);
     iocService.RegisterImplementation <IPushNotificationTapHandler, THandler>(IocLifetime.Singleton);
     iocService.RegisterImplementation <IPushNotificationsClientConfig, TConfig>(IocLifetime.Singleton);
     return(iocService);
 }
Ejemplo n.º 14
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            _iocService = new DryIocService(containerRegistry.GetContainer());
            _iocService.RegisterType <NumberGenerator>();
            _iocService.RegisterXamarinAnalyticsService <AnalyticsConfig>();
            RegisterBuildConfig();

            containerRegistry.RegisterForNavigation <NavigationPage>();
            containerRegistry.RegisterForNavigation <MainPage, MainPageViewModel>();
        }
        private static Application Application(IIocService root)
        {
            var application = root.Get <Application>();

            application.AttachDiRoot(new DiBridge(root));
            if (VisibleMainWindow(root) is Window mainWin)
            {
                application.MainWindow = mainWin;
            }
            return(application);
        }
Ejemplo n.º 16
0
        private static void Register(IIocService iocService)
        {
            var httpClientFactory = (IHttpClientFactory) new ServiceCollection()
                                    .AddHttpClient()
                                    .BuildServiceProvider()
                                    .GetService(typeof(IHttpClientFactory));

            iocService.RegisterInstance(httpClientFactory);
            iocService.RegisterImplementation <IHttpClientService, Service.HttpClientService>(IocLifetime.Singleton);
            iocService.RegisterImplementation <IHttpClientServiceConfig, DefaultHttpClientServiceConfig>(IocLifetime.Singleton);
            iocService.RegisterConsoleLoggerClientService();
        }
        public static IIocService AddVoidMutationClientHandler <TMutationResponse, TCommandDto, TCommand, TMutationClient>
            (this IIocService services)
            where TMutationResponse : class
            where TMutationClient : class, IVoidQueryConverter <TMutationResponse, TCommandDto, TCommand>
            where TCommand : notnull
            where TCommandDto : notnull
        {
            services.RegisterImplementation <IVoidCommandHandler <TCommand>, VoidCommandClientHandler <TCommandDto, TCommand> >(IocLifetime.Singleton);
            services.RegisterImplementation <IVoidCommandHandler <TCommandDto>, VoidClientQueryHandler <TMutationResponse, TCommandDto, TCommand> >(IocLifetime.Singleton);
            services.RegisterImplementation <IVoidQueryConverter <TMutationResponse, TCommandDto, TCommand>, TMutationClient>();
            services.RegisterImplementation <ICommandConverter <TCommandDto, TCommand>, TMutationClient>();

            return(services);
        }
Ejemplo n.º 18
0
        public static IIocService RegisterXamarinAnalyticsService <TConfig>(this IIocService iocService)
            where TConfig : class, IApplicationInsightsConfig
        {
            iocService.RegisterConsoleLoggerClientService();

            iocService.RegisterImplementation <IApplicationInsightsConfig, TConfig>(IocLifetime.Singleton);
            iocService.RegisterImplementation <ITelemetryClientProxy, TelemetryClientProxy>(IocLifetime.Singleton);
            iocService.RegisterImplementation <ITelemetryDecorator, TelemetryDecorator>();

            iocService.RegisterImplementation <IAnalyticsSessionFactory, XamarinSessionFactory>(IocLifetime.Singleton);
            iocService.RegisterImplementation <IAnalyticsService, AnalyticsService>(IocLifetime.Singleton);

            return(iocService);
        }
Ejemplo n.º 19
0
        public static void Fill(this IIocService service, Span <object?> destination, IEnumerable <IBindingRequest> requests)
        {
            int pos = 0;

            foreach (var request in requests)
            {
                if (pos >= destination.Length)
                {
                    return;
                }
                destination[pos] = service.Get(request);
                pos++;
            }
        }
Ejemplo n.º 20
0
        private object FirstElligibleContainer(IIocService service, IBindingRequest bindingRequest)
        {
            IIocService?currentService = service;

            while (currentService != null && !bindingRequest.DesiredType.IsInstanceOfType(currentService))
            {
                currentService = currentService.ParentScope;
            }
            if (currentService == null)
            {
                throw new IocException("No valid service container found");
            }
            return(currentService);
        }
Ejemplo n.º 21
0
        public static IProxyGenerator GetSource(IIocService service)
        {
            if (source == null)
            {
                lock (mutex)
                {
                    if (source == null)
                    {
                        source = service.CanGet(typeof(IProxyGenerator))?
                                 service.Get <IProxyGenerator>():
                                 new ProxyGenerator();
                    }
                }
            }

            return(source);
        }
Ejemplo n.º 22
0
 public void TearDown()
 {
     Sut.Dispose();
     Sut = null;
 }
Ejemplo n.º 23
0
 public void Setup()
 {
     Sut = ConstructSut();
 }
Ejemplo n.º 24
0
 public static IIocService RegisterAppCenterPushNotificationsClient(this IIocService iocService)
 {
     iocService.RegisterImplementation <IPushNotificationClientService, AppCenterPushNotificationClientService>();
     return(iocService);
 }
 public object?Create(IIocService ioc) => creator(ioc);
Ejemplo n.º 26
0
 public static object?[] Get(this IIocService service, IList <IBindingRequest> requiredParameters)
 {
     object?[] argumentArray = new object[requiredParameters.Count()];
     service.Fill(argumentArray.AsSpan(), requiredParameters);
     return(argumentArray);
 }
Ejemplo n.º 27
0
 public static object Get(this IIocService ioc, Type serviceTppe, params object[] arguments)
 {
     return(RecursiveExceptionTracker.BasisCall(ioc.Get, new RootBindingRequest(serviceTppe, ioc, arguments))
            ?? throw new IocException("Type resolved to null"));
 }
Ejemplo n.º 28
0
 public static T Get <T>(this IIocService ioc, params object[] arguments) => (T)ioc.Get(typeof(T), arguments);
Ejemplo n.º 29
0
 public static bool CanGet(this IIocService ioc, IEnumerable <IBindingRequest> requests) =>
 requests.All(ioc.CanGet);
Ejemplo n.º 30
0
 public static bool CanGet(this IIocService ioc, Type type, params object[] arguments) =>
 ioc.CanGet(new RootBindingRequest(type, ioc, arguments));