Пример #1
0
        /// <inheritdoc />
        public void RegisterTypes(IContainerProvider container)
        {
            container.RegisterFactory <ILogger>(_ => LogManager.GetCurrentClassLogger());

            container.RegisterInstance <IDbContextFactory>(new DbContextFactory(() => new EngineDbContext(container.GetDbContextOptions <EngineDbContext>())));

            container.RegisterType <IModuleService, ModuleService>();
            container.RegisterType <IModuleConnectionService, ModuleConnectionService>();

            container.RegisterSingleton <ISettingsRegistry, SettingsRegistry>();
            container.RegisterSingleton <ISettingsService, SettingsService>();
            container.RegisterInstance <ISettingHandlerFactory>(new SettingHandlerFactory(t => (ISettingHandler)container.Resolve(t)));

            container.RegisterSingleton <IApiServer, ApiServer>();
            container.RegisterInstance <IApiServerConfiguration>(new ApiConfiguration {
                PipeName = Globals.EnginePipeName
            });
            container.RegisterSingleton <IApiClient, ApiClient>();
            container.RegisterInstance <IApiClientConfiguration>(new ApiConfiguration {
                PipeName = Globals.AppPipeName
            });
            container.RegisterSingleton <IRequestProcessorFactory, RequestProcessorFactory>();
            container.RegisterSingleton <IMessageSerializer, MessagePackMessageSerializer>();

            container.RegisterSingleton <IUpdateService, HttpUpdateService>();
        }
Пример #2
0
 /// <summary>
 /// Registers multiple types for a specific interface. The types are registered using their <see cref="Type.AssemblyQualifiedName"/> as registration name.
 /// </summary>
 /// <param name="container">The container.</param>
 /// <param name="from">The interface type to register the types for.</param>
 /// <param name="types">The types to register.</param>
 public static void RegisterTypes(this IContainerProvider container, Type from, IEnumerable <Type> types)
 {
     foreach (var type in types)
     {
         container.RegisterType(from, type, type.AssemblyQualifiedName);
     }
 }
Пример #3
0
        /// <summary>
        /// Registers all specified types as available audio modules.
        /// </summary>
        public static void RegisterAudioModules(this IContainerProvider container, params Type[] moduleTypes)
        {
            foreach (var moduleType in moduleTypes)
            {
                container.RegisterType(moduleType);
            }

            container.RegisterTypes <IAudioModule>(moduleTypes);
        }
Пример #4
0
        public void RegisterTypes(IContainerProvider container)
        {
            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddJsonFile("appsettings.json", false);
            var configuration = configurationBuilder.Build();

            container.RegisterInstance <IConfiguration>(configuration);

            container.RegisterFactory <ILogger>(c => LogManager.GetCurrentClassLogger());

            container.RegisterInstance <IDbContextFactory>(new DbContextFactory(() => new AppDbContext(container.GetDbContextOptions <AppDbContext>())));

            container.RegisterSingleton <INavigationManager, NavigationManager>();

            container.RegisterSingleton <IApplicationStateService, ApplicationStateService>();

            container.RegisterSingleton <IResourceRegistry, ResourceRegistry>();
            container.RegisterSingleton <IMenuItemRegistry, MenuItemRegistry>();
            container.RegisterSingleton <IToolBarRegistry, ToolBarRegistry>();
            container.RegisterSingleton <IWidgetRegistry, WidgetRegistry>();
            container.RegisterSingleton <IWidgetFactory, WidgetFactory>();

            container.RegisterSingleton <IRequestProcessorFactory, RequestProcessorFactory>();
            container.RegisterType <IRequestProcessor, ApiEventRequestProcessor>();
            container.RegisterSingleton <IApiServer, ApiServer>();
            container.RegisterInstance <IApiServerConfiguration>(new ApiConfiguration {
                PipeName = Globals.AppPipeName
            });
            container.RegisterSingleton <IApiClient, ApiClient>();
            container.RegisterInstance <IApiClientConfiguration>(new ApiConfiguration {
                PipeName = Globals.EnginePipeName
            });
            container.RegisterSingleton <IMessageSerializer, MessagePackMessageSerializer>();

            container.RegisterSingleton <ISettingsRegistry, SettingsRegistry>();
            container.RegisterSingleton <ISettingsService, SettingsService>();
            container.RegisterInstance <ISettingHandlerFactory>(new SettingHandlerFactory(t => (ISettingHandler)container.Resolve(t)));

            container.RegisterDialog <MessageBoxView, MessageBoxViewModel>();

            container.RegisterView <MainMenuView, MainMenuViewModel>();
            container.RegisterView <MainStatusBarView, MainStatusBarViewModel>();
            container.RegisterView <ToolBarView, ToolBarViewModel>();

            container.RegisterView <StartupView, StartupViewModel>();
            container.RegisterView <StatusView, StatusViewModel>();
            container.RegisterView <MainView, MainViewModel>();
            container.RegisterView <SettingsView, SettingsViewModel>();
            container.RegisterView <AboutView, AboutViewModel>();

            container.RegisterRequestProcessor <UpdatesRequestProcessor>();
            container.RegisterSingleton <IUpdateService, HttpUpdateService>();
            container.RegisterSingleton <UpdateHandler>();
        }
Пример #5
0
        /// <summary>
        /// Registers a request processor. If the <paramref name="name"/> parameter is not specified the processor has to be annotated with a <see cref="RequestProcessorNameAttribute"/> attribute.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <param name="name">The name of the resource to register this processor for.
        /// If this is omitted and no <see cref="RequestProcessorNameAttribute"/> is present
        /// the processor will be used as a default processor for requests without a specific resource.</param>
        /// <typeparam name="TProcessor"></typeparam>
        public static void RegisterRequestProcessor <TProcessor>(this IContainerProvider container, string name = null)
            where TProcessor : IRequestProcessor
        {
            if (name == null)
            {
                name = RequestProcessorNameAttribute.DefaultName;
                var attributes = typeof(TProcessor).GetCustomAttributes(typeof(RequestProcessorNameAttribute), true);
                if (attributes.Length == 1 && attributes[0] is RequestProcessorNameAttribute nameAttribute)
                {
                    name = nameAttribute.Name;
                }
            }

            container.RegisterType <IRequestProcessor, TProcessor>(name);
        }
Пример #6
0
        /// <summary>
        /// Registers a view and it's corresponding view model.
        /// </summary>
        /// <typeparam name="TView">The view type.</typeparam>
        /// <typeparam name="TViewModel">The view model type.</typeparam>
        /// <param name="container"></param>
        public static void RegisterView <TView, TViewModel>(this IContainerProvider container)
            where TView : FrameworkElement
            where TViewModel : IViewModel
        {
            container.RegisterType <TView>();
            container.RegisterFactory <object>(c =>
            {
                var view      = c.Resolve <TView>();
                var viewModel = c.Resolve <TViewModel>();

                view.DataContext = viewModel;

                return(view);
            }, typeof(TView).Name);

            //container.RegisterTypeForNavigation<TView>();
        }
Пример #7
0
 public static void RegisterType <T>(this IContainerProvider container, string name = null)
 {
     container.RegisterType(typeof(T), name);
 }
Пример #8
0
 public static void RegisterType <TFrom, TTo>(this IContainerProvider container, string name = null)
     where TTo : TFrom
 {
     container.RegisterType(typeof(TFrom), typeof(TTo), name);
 }