protected override object CreateContainer(Type t)
        {
            var container = new ServiceContainer();

            container.Register(t);
            container.Compile();
            return(container);
        }
Esempio n. 2
0
        public void ShouldLogWarningWhenCompileOpenGenericService()
        {
            var options = new ContainerOptions();
            var log     = new List <LogEntry>();

            options.LogFactory = (type) => (e) => log.Add(e);
            var container = new ServiceContainer(options);

            container.Register(typeof(OpenGenericFoo <,>));
            container.Compile();

            Assert.Contains(log, e => e.Level == LogLevel.Warning && e.Message.Matches("Unable to precompile.*OpenGenericFoo"));
        }
Esempio n. 3
0
        public void ShouldCompileServicesAccordingToPredicate()
        {
            var options = new ContainerOptions();
            var log     = new List <LogEntry>();

            options.LogFactory = (type) => (e) => log.Add(e);
            var container = new ServiceContainer(options);

            container.Register <IBar, Bar>();
            container.Register <IFoo, FooWithDependency>();
            container.Compile(sr => sr.ServiceType == typeof(IBar));

            Assert.Contains(log, e => e.Level == LogLevel.Info && e.Message.Matches("Compiling delegate.*IBar"));
            Assert.DoesNotContain(log, e => e.Level == LogLevel.Info && e.Message.Matches("Compiling delegate.*IFoo"));
        }
Esempio n. 4
0
        public void ShouldCompileNamedService()
        {
            var options = new ContainerOptions();
            var log     = new List <LogEntry>();

            options.LogFactory = (type) => (e) => log.Add(e);
            var container = new ServiceContainer(options);

            container.Register <IFoo, Foo>("SomeFoo");
            container.Compile();

            Assert.Contains(log, e => e.Level == LogLevel.Info && e.Message.Matches("Compiling delegate.*IFoo.*SomeFoo"));

            log.Clear();
            container.GetInstance <IFoo>();
            Assert.DoesNotContain(log, e => e.Level == LogLevel.Info && e.Message.Matches("Compiling delegate.*IFoo.*SomeFoo"));
        }
Esempio n. 5
0
        public void ShouldCompileNamedOpenGenericService()
        {
            var options = new ContainerOptions();
            var log     = new List <LogEntry>();

            options.LogFactory = (type) => (e) => log.Add(e);
            var container = new ServiceContainer(options);

            container.Register(typeof(OpenGenericFoo <,>), typeof(OpenGenericFoo <,>), "OpenGenericFoo");

            container.Compile <OpenGenericFoo <string, int> >("OpenGenericFoo");

            log.Clear();

            container.GetInstance <OpenGenericFoo <string, int> >("OpenGenericFoo");

            Assert.DoesNotContain(log, e => e.Level == LogLevel.Info && e.Message.Matches("Compiling delegate.*OpenGenericFoo"));
        }
Esempio n. 6
0
        private void RegisterComponents()
        {
            //Services
            var viewModelFactory = new ViewModelFactory(_container, _logger);

            _container.RegisterInstance(typeof(IViewModelFactory), viewModelFactory);

            var modelFactory = new ModelFactory(_container, _logger);

            _container.RegisterInstance(typeof(IModelFactory), modelFactory);

            _container.Register <IBinarySerializer, ProtobufSerializer>(new PerContainerLifetime());
            _container.Register <IVectorCanvasLoader, VectorCanvasLoader>(new PerContainerLifetime());
            _container.Register <IRasterLoader, RasterLoader>(new PerContainerLifetime());
            _container.Register <ICanvasOperationService, CanvasOperationService>(new PerContainerLifetime());
            _container.Register <ByteCompressor>(new PerContainerLifetime());

            var shapeProvider = new ShapeProvider(
                _container.GetInstance <IBinarySerializer>(),
                _container.GetInstance <ByteCompressor>(),
                _container.GetInstance <ICanvasOperationService>());

            _container.RegisterInstance <IShapeProvider>(shapeProvider);
            _container.RegisterInstance <ICanvasHistoryManager>(shapeProvider);
            _container.RegisterInstance(AppColorService.GetInstance);

            //ViewModels
            _container.Register <MainWindowViewModel>();
            _container.Register <CommandPanelViewModel>();
            _container.Register <CanvasViewModel>();
            _container.Register <Shape, PropertiesPanelViewModel>(
                (factory, model) => new PropertiesPanelViewModel(model, factory.GetInstance <AppColorService>()));

            //Models
            _container.Register <RectangleShape>();
            _container.Register <PolylineShape>();

            _container.Compile();
        }