Exemplo n.º 1
0
        public static IDependencyManager RegisterRequiredServices(this IDependencyManager dependencyManager)
        {
            if (dependencyManager == null)
            {
                throw new ArgumentNullException(nameof(dependencyManager));
            }

            dependencyManager.RegisterXamarinEssentials();

            dependencyManager.Register <IDateTimeProvider, DefaultDateTimeProvider>(lifeCycle: DependencyLifeCycle.SingleInstance, overwriteExisting: false);

            dependencyManager.RegisterInstance(DefaultJsonContentFormatter.Current, overwriteExisting: false);

            dependencyManager.RegisterUsing(resolver => new INavServiceFactory((prismNavService, popupNav) => DefaultNavService.INavServiceFactory <DefaultNavService>(prismNavService, popupNav)), overwriteExisting: false, lifeCycle: DependencyLifeCycle.Transient);

            dependencyManager.RegisterInstance <IExceptionHandler>(BitExceptionHandler.Current);

            ((IAutofacDependencyManager)dependencyManager).GetContainerBuidler().RegisterBuildCallback(container =>
            {
                if (BitExceptionHandler.Current is BitExceptionHandler exceptionHandler)
                {
                    exceptionHandler.ServiceProvider = container.Resolve <IServiceProvider>();
                }
            });

            dependencyManager.RegisterInstance <ITelemetryService>(ApplicationInsightsTelemetryService.Current);
            dependencyManager.RegisterInstance <ITelemetryService>(AppCenterTelemetryService.Current);
            dependencyManager.RegisterInstance <ITelemetryService>(FirebaseTelemetryService.Current);
            dependencyManager.RegisterInstance(LocalTelemetryService.Current, servicesType: new[] { typeof(LocalTelemetryService).GetTypeInfo(), typeof(ITelemetryService).GetTypeInfo() });
            IContainerRegistry containerRegistry = dependencyManager.GetContainerRegistry();

            containerRegistry.RegisterForNav <BitConsoleView, BitConsoleViewModel>("BitConsole");

            dependencyManager.GetContainerBuilder().RegisterBuildCallback(container =>
            {
                IMessageReceiver?messageReceiver = container.ResolveOptional <IMessageReceiver>();
                IConnectivity connectivity       = container.Resolve <IConnectivity>();
                IVersionTracking versionTracking = container.Resolve <IVersionTracking>();

                foreach (TelemetryServiceBase telemetryService in container.Resolve <IEnumerable <ITelemetryService> >().OfType <TelemetryServiceBase>())
                {
                    if (messageReceiver != null)
                    {
                        telemetryService.MessageReceiver = messageReceiver;
                    }
                    telemetryService.Connectivity    = connectivity;
                    telemetryService.VersionTracking = versionTracking;
                }
            });

            return(dependencyManager);
        }
Exemplo n.º 2
0
        public static IDependencyManager RegisterRequiredServices(this IDependencyManager dependencyManager)
        {
            if (dependencyManager == null)
            {
                throw new ArgumentNullException(nameof(dependencyManager));
            }

            dependencyManager.Register <IDateTimeProvider, DefaultDateTimeProvider>(lifeCycle: DependencyLifeCycle.SingleInstance, overwriteExisting: false);

            dependencyManager.RegisterInstance(DefaultJsonContentFormatter.Current, overwriteExisting: false);

            dependencyManager.RegisterUsing(resolver => new INavServiceFactory((prismNavService, popupNav, regionManager) => DefaultNavService.INavServiceFactory <DefaultNavService>(prismNavService, popupNav, regionManager)), overwriteExisting: false, lifeCycle: DependencyLifeCycle.Transient);

            dependencyManager.RegisterInstance <IExceptionHandler>(BitExceptionHandler.Current);

            dependencyManager.RegisterInstance <ITelemetryService>(ApplicationInsightsTelemetryService.Current);
            dependencyManager.RegisterInstance <ITelemetryService>(AppCenterTelemetryService.Current);
            dependencyManager.RegisterInstance <ITelemetryService>(FirebaseTelemetryService.Current);
            dependencyManager.RegisterInstance <ITelemetryService>(DebugTelemetryService.Current);
            dependencyManager.RegisterInstance <ITelemetryService>(ConsoleTelemetryService.Current);
            dependencyManager.RegisterInstance(LocalTelemetryService.Current, servicesType: new[] { typeof(LocalTelemetryService).GetTypeInfo(), typeof(ITelemetryService).GetTypeInfo() });
            IContainerRegistry containerRegistry = dependencyManager.GetContainerRegistry();

            containerRegistry.RegisterForNav <BitConsoleView, BitConsoleViewModel>("BitConsole");

            return(dependencyManager);
        }