Пример #1
0
        static void Main()
        {
            _log = LogManager.GetCurrentClassLogger();
            _log.Warn("Service is about to start");
#if DEBUG
            LogManager.GlobalThreshold = LogLevel.Trace;
#endif
            AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;

            try
            {
                var container = new Container(new SensuClientRegistry());
                var sensuClient = container.GetInstance<ISensuClient>() as ServiceBase;
                
                ServiceBase[] servicesToRun;
                servicesToRun = new ServiceBase[] 
                {
                    sensuClient
                 };

                if (Environment.UserInteractive)
                {
                    RunInteractive(servicesToRun);
                }
                else
                {
                    ServiceBase.Run(servicesToRun);
                }
            }
            catch (Exception exception)
            {
                _log.Error(exception, "Error in startup sensu-client.");
            }
            
        }
Пример #2
0
 public Form1()
 {
     var container = new Container(c => c.For<ICalculator>().Use<Calculator>());
     var viewModel = container.GetInstance<ViewModel>();
     InitializeComponent();
     button1.Click += viewModel.Add;
     viewModelBindingSource.DataSource = new [] {viewModel};
 }
        public void ShouldPickUpAutoNotifyAttributedClass()
        {
            var container = new Container(config => config.Scan(scan =>
            {
                scan.With(new AutoNotifyAttrConvention());
                scan.TheCallingAssembly();
            }));

            Assert.That(container.GetInstance<TestClassWithAttr>(), Is.InstanceOf<INotifyPropertyChanged>());
        }
        public void UsingAutoNotifyAttributeConvention()
        {
            var container = new Container(config => config.Scan(scanConfig =>
            {
                scanConfig.With(new AutoNotifyAttrConvention());
                scanConfig.TheCallingAssembly();
                scanConfig.WithDefaultConventions();
            }));

            var gem = container.GetInstance<IGem>();

            Assert.That(gem, Is.InstanceOf<INotifyPropertyChanged>());
        }
Пример #5
0
        public override object GetService(Type serviceType)
        {
            object service = null;

            if (!serviceType.IsAbstract && !serviceType.IsInterface && serviceType.IsClass)
            {
                service = _container.GetInstance(serviceType);
            }
            else
            {
                service = _container.TryGetInstance(serviceType) ?? base.GetService(serviceType);
            }

            return(service);
        }
        public void ButtonClicked()
        {
            var container = new StructureMap.Container(x =>
            {
                x.For <IService1>().Use <Service1>().Transient();
                x.For <IService2>().Use <Service2>().Singleton();
                x.For <Client>().Use <Client>();
            });

            var client = container.GetInstance <Client>();

            client.InitiateServiceMethods();

            container.Release(client);
        }
Пример #7
0
    public void _Inline_Setter_Should_Populate_Multiple_Implementations()
    {
        //Arrange
        var registry = new StructureMap.Registry();

        registry.IncludeRegistry <ContainerRegistry>();
        // build a container
        var container = new StructureMap.Container(registry);

        //Act
        var target = container.GetInstance <IMeasurementContractsApplication>();

        //Assert
        target.Should().NotBeNull();
        target.DistributionListProvider.Should().BeOfType <DistributionListProvider>();
        target.FirstDeliveryNoticeDocumentRecallProvider.Should().BeOfType <FirstDeliveryNoticeDocumentAdminUpdateProvider>();
    }
        public void _Inline_Setter_Should_Populate_Multiple_Implementations()
        {
            //Arrange
            var registry = new StructureMap.Registry();

            registry.IncludeRegistry <ContainerRegistry>();
            // build a container
            var container = new StructureMap.Container(registry);

            //Act
            var application = container.GetInstance <IMeasurementContractsApplication>();

            //Assert
            application.Should().NotBeNull();
            application.Foo.Should().BeOfType <Foo>();
            application.Bar.Should().BeOfType <Bar>();
        }
Пример #9
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            var container = new StructureMap.Container(x => {
                x.Scan(y => {
                    y.TheCallingAssembly();
                    y.WithDefaultConventions();
                });
            });

            ServiceLocator.Container = container;

            PageControllerConfiguration.PageDependencyResolver = new StructureMapDependencyResolver(container);

            var eventBus = new UiEventBus();

            container.Configure(x => {
                x.For <LoggingService>().Use <LoggingService>().Singleton();
                x.For <IEventBus>().Use(eventBus);
                x.For <ICrossAppEventBus>().Use(eventBus);
                x.For <IBroadcastService>().Use <BroadcastService>().Singleton();
                x.For <IRequestHandler>().Use <TcpRequestHandler>();
                x.For <AppData>().Use <AppData>().Singleton();
                x.For <Configuration>().Use <Configuration>().Singleton();
                x.For <Game>().Use <Game>().Singleton();
                x.For <IControllerFactory>().Use(new ControllerFactory(container));
            });


            _loggingService = container.GetInstance <LoggingService>();

            var cardLoadService = container.GetInstance <CardLoadService>();

            cardLoadService.RegisterEvents();

            var configurationService = container.GetInstance <ConfigurationService>();

            configurationService.Load();

            var gameFileService = container.GetInstance <GameFileService>();

            gameFileService.Load();

            var receiveSocketService = container.GetInstance <ReceiveSocketService>();

            receiveSocketService.StartListening(TcpInfo.EmoPort);

            var controller = container.GetInstance <MainController>();

            controller.View.Show();
        }
        public void UsingFireOptionAlways()
        {
            var container = new Container(config => config.Scan(scanConfig =>
            {
                scanConfig.With(new AutoNotifyAttrConvention());
                scanConfig.TheCallingAssembly();
                scanConfig.WithDefaultConventions();
            }));

            var bar = container.GetInstance<Bar>();

            var tracker = new EventTracker<PropertyChangedEventHandler>();

            bar.Value = "test";
            (bar as INotifyPropertyChanged).PropertyChanged += tracker;
            bar.Value = "test";

            Assert.That(tracker.WasCalled);
        }
        public void UsingFireOptionOnlyOnChange()
        {
            var container = new Container(config => config.Scan(scanConfig =>
            {
                scanConfig.With(new AutoNotifyAttrConvention());
                scanConfig.TheCallingAssembly();
                scanConfig.WithDefaultConventions();
            }));

            var foo = container.GetInstance<Foo>();

            var tracker = new EventTracker<PropertyChangedEventHandler>();

            foo.Value = "test";
            (foo as INotifyPropertyChanged).PropertyChanged += tracker;
            foo.Value = "test";

            Assert.That(tracker.WasNotCalled);
        }
        public void UsingDependentPropertiesUpdatesRelatedWhenUsingDependsOnAttribute()
        {
            var container = new Container(config => config.Scan(scanConfig =>
            {
                scanConfig.With(new AutoNotifyAttrConvention());
                scanConfig.TheCallingAssembly();
                scanConfig.WithDefaultConventions();
            }));

            var account = container.GetInstance<Account>();
            var propsChanged = new List<string>();

            (account as INotifyPropertyChanged).PropertyChanged += (o, e) => propsChanged.Add(e.PropertyName);
            account.AccountName = "big customer";
            account.ClientId = "1234";

            Assert.That(propsChanged.Count, Is.EqualTo(4));
            Assert.That(propsChanged.Count(x => x == "AccountName"), Is.EqualTo(1));
            Assert.That(propsChanged.Count(x => x == "ClientId"), Is.EqualTo(1));
            Assert.That(propsChanged.Count(x => x == "AccountId"), Is.EqualTo(2));
        }
        public void CreateForClass()
        {
            var container = new Container(config =>
            {
                config
                    .For<Bar>()
                    .Use(context => Notifiable.MakeForClassGeneric<Bar>(FireOptions.Always, new ProxyGenerator(), new DependencyMap()));
            });

            var bar = container.GetInstance<Bar>();

            // make sure it's wrapped
            Assert.That(bar, Is.InstanceOf<INotifyPropertyChanged>());

            // make sure it fires properly
            var tracker = new EventTracker<PropertyChangedEventHandler>();

            (bar as INotifyPropertyChanged).PropertyChanged += tracker;
            bar.Value = "yo";

            Assert.That(tracker.WasCalled);
        }
Пример #14
0
        public T ViewInForm <T>(Action <T> initialzer = null, bool DisplayIsDialog = false) where T : ViewBase
        {
            var container    = new StructureMap.Container(TypesRegistry);
            var viewInstance = container.GetInstance <T>();

            viewInstance.viewEngine = this;
            initialzer?.Invoke(viewInstance);
            if (openForm.ContainsKey(viewInstance.ViewIdentifier))
            {
                var currentform = openForm[viewInstance.ViewIdentifier];
                currentform.Activate();
                return((T)currentform.Controls.OfType <T>().First());
            }
            var form = new Form();

            form.Width         = 800;
            form.Height        = 600;
            form.StartPosition = FormStartPosition.CenterScreen;
            form.RightToLeft   = RightToLeft.Yes;
            form.Font          = new System.Drawing.Font("Tahoma", 8);
            form.Text          = viewInstance.ViewTitle;
            form.ShowInTaskbar = false;
            form.Controls.Add(viewInstance);
            form.FormClosed  += ((obj, e) => openForm.Remove(viewInstance.ViewIdentifier));
            viewInstance.Dock = DockStyle.Fill;
            openForm.Add(viewInstance.ViewIdentifier, form);


            if (DisplayIsDialog)
            {
                form.ShowDialog();
            }
            else
            {
                form.Show();
            }

            return((T)viewInstance);
        }
Пример #15
0
        public List <GeoCode> GetGeocodes(string location)
        {
            var gnda = container.GetInstance <IDataAccess>();
            //GeoNamesDataAccess gnda = new GeoNamesDataAccess();

            string xmlRaw = gnda.GetGeoCodeList(location);

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xmlRaw);

            XmlNodeList xmlNodes = doc.DocumentElement.SelectNodes("/geonames/geoname");

            List <GeoCode> GeocodeList = new List <GeoCode>();

            List <Task> taskList = new List <Task>();

            foreach (XmlNode node in xmlNodes)
            {
                var task = Task.Factory.StartNew(() =>
                {
                    GeoCode gcTemp = new GeoCode();

                    gcTemp.Lat         = node.SelectSingleNode("lat").InnerText;
                    gcTemp.Lon         = node.SelectSingleNode("lng").InnerText;
                    gcTemp.ToponymName = node.SelectSingleNode("toponymName").InnerText;

                    GeocodeList.Add(gcTemp);
                });

                taskList.Add(task);
            }

            Task.WaitAll(taskList.ToArray());

            return(GeocodeList);;
        }
Пример #16
0
        public static IEnumerable <object[]> GetContainerAdapters()
        {
            yield return(new object[] { (ResolverFactory)(c =>
                {
                    var container = new DefaultServiceContainer();
                    c(container);
                    return container.Resolve <IServiceResolver>();
                }) });

            yield return(new object[] { (ResolverFactory)(c =>
                {
                    var container = new LightInjectContainer();
                    c(new LightInjectAdapter(container));
                    return container.GetInstance <IServiceResolver>();
                }) });

            yield return(new object[] { (ResolverFactory)(c =>
                {
                    var container = new SimpleInjectorContainer {
                        Options = { AllowOverridingRegistrations = true }
                    };
                    c(new SimpleInjectorAdapter(container));
                    return container.GetInstance <IServiceResolver>();
                }) });

            yield return(new object[] { (ResolverFactory)(c =>
                {
                    var container = new StructureMapContainer(r => c(new StructureMapAdapter(r)));
                    return container.GetInstance <IServiceResolver>();
                }) });

            yield return(new object[] { (ResolverFactory)(c =>
                {
                    var containerBuilder = new ContainerBuilder();
                    c(new AutofacAdapter(containerBuilder));
                    var container = containerBuilder.Build();
                    return container.Resolve <IServiceResolver>();
                }) });

            yield return(new object[] { (ResolverFactory)(c =>
                {
                    var container = new WindsorContainer();
                    c(new WindsorAdapter(container));
                    return container.Resolve <IServiceResolver>();
                }) });

            yield return(new object[] { (ResolverFactory)(c =>
                {
                    var container = new NinjectContainer();
                    c(new NinjectAdapter(container));
                    return container.Get <IServiceResolver>();
                }) });

#if !NETFX
            yield return(new object[] { (ResolverFactory)(c =>
                {
                    var serviceCollection = new ServiceCollection();
                    c(new ServiceCollectionAdapter(serviceCollection));
                    var serviceProvider = serviceCollection.BuildServiceProvider();
                    return serviceProvider.GetService <IServiceResolver>();
                }) });
#endif
        }
 public static T GetInstance <T>()
 {
     return(TheContainer.GetInstance <T>());
 }
Пример #18
0
        static public void Main(string[] args)
        {
            var _benchmark = new Benchmark(() => new Action(() => new Calculator()));

            _benchmark.Add("SimpleInjector", () =>
            {
                var _container = new SimpleInjector.Container();
                _container.Register <ICalculator, Calculator>(SimpleInjector.Lifestyle.Transient);
                return(() => _container.GetInstance <ICalculator>());
            });
            //TODO : change to test new Puresharp DI recast
            _benchmark.Add("Puresharp", () =>
            {
                var _container = new Puresharp.Composition.Container();
                _container.Add <ICalculator>(() => new Calculator(), Puresharp.Composition.Lifetime.Volatile);
                return(() => _container.Enumerable <ICalculator>());
            });
            //TODO : change to test MEF2
            _benchmark.Add("MEF", () =>
            {
                var _container = new System.Composition.Hosting.ContainerConfiguration().WithAssembly(typeof(ICalculator).Assembly).CreateContainer();
                return(() => _container.GetExport <ICalculator>());
            });
            _benchmark.Add("Castle Windsor", () =>
            {
                var _container = new WindsorContainer();
                _container.Register(Castle.MicroKernel.Registration.Component.For <ICalculator>().ImplementedBy <Calculator>());
                return(() => _container.Resolve <ICalculator>());
            });
            _benchmark.Add("Unity", () =>
            {
                var _container = new UnityContainer();
                _container.RegisterType <ICalculator, Calculator>();
                return(() => _container.Resolve <ICalculator>());
            });
            _benchmark.Add("StuctureMap", () =>
            {
                var _container = new StructureMap.Container(_Builder => _Builder.For <ICalculator>().Use <Calculator>());
                return(() => _container.GetInstance <ICalculator>());
            });
            _benchmark.Add("DryIoc", () =>
            {
                var _container = new DryIoc.Container();
                _container.Register <ICalculator, Calculator>();
                return(() => _container.Resolve <ICalculator>());
            });
            _benchmark.Add("Autofac", () =>
            {
                var _builder = new Autofac.ContainerBuilder();
                _builder.RegisterType <Calculator>().As <ICalculator>();
                var _container = _builder.Build(Autofac.Builder.ContainerBuildOptions.None);
                return(() => _container.Resolve <ICalculator>());
            });
            _benchmark.Add("Ninject", () =>
            {
                var _container = new Ninject.StandardKernel();
                _container.Bind <ICalculator>().To <Calculator>();
                return(() => _container.Get <ICalculator>());
            });
            _benchmark.Add("Abioc", () =>
            {
                var _setup = new Abioc.Registration.RegistrationSetup();
                _setup.Register <ICalculator, Calculator>();
                var _container = Abioc.ContainerConstruction.Construct(_setup, typeof(ICalculator).Assembly);
                return(() => _container.GetService <ICalculator>());
            });
            _benchmark.Add("Grace", () =>
            {
                var _container = new Grace.DependencyInjection.DependencyInjectionContainer();
                _container.Configure(c => c.Export <Calculator>().As <ICalculator>());
                return(() => _container.Locate <ICalculator>());
            });
            _benchmark.Run(Console.WriteLine);
        }
Пример #19
0
        public void RegisterImplmentation()
        {
            // Auto register
            var odtLibraries = GetReferencingAssemblies("OnDemandTools")
                               .SelectMany(assembly => assembly.ExportedTypes)
                               .ToList();


            var profiles = odtLibraries.Where(t => t.GetTypeInfo().IsClass &&
                                              !t.GetTypeInfo().IsAbstract &&
                                              !t.GetTypeInfo().IsInterface).ToList();


            cntr.Configure(c =>
            {
                foreach (var item in profiles)
                {
                    var ints = item.GetInterfaces();
                    foreach (var it in ints)
                    {
                        if (it.ToString().StartsWith("OnDemandTools", StringComparison.OrdinalIgnoreCase))
                        {
                            c.AddType(it, item);
                        }
                    }
                }



                // Add those that cannot be auto registered. Basically the ones outside 'OnDemandTools' namespace or
                // someother special case
                c.For <IODTDatastore>().Use <ODTPrimaryDatastore>();

                // Special initialization for StatusLibrary class
                OnDemandTools.DAL.Modules.Reporting.Library.StatusLibrary.Init((AppSettings)cntr.GetInstance(typeof(AppSettings)));
            });
        }
Пример #20
0
        public override bool Execute()
        {
            if (TargetSitemapsFiles == null && TargetProjectFiles == null && TargetUrls == null)
            {
                Log.LogError("You must specify at least 1 url in order to run the task. " +
                    "The urls can be provided through TargetUrls, TargetProjectFiles, or TargetSitemapFiles.");
                return false;
            }

            // Setup configuration of DI container
            Log.LogMessage(MessageImportance.Low, "Composing Application");
            var container = new StructureMap.Container();
            container.Configure(r => r.AddRegistry<HtmlValidatorRegistry>());

            // Add the current parameters to context
            Log.LogMessage(MessageImportance.Low, "Creating Context");

            var context = new HtmlValidatorRunnerContext(new ConsoleAnnouncer())
            {
                TargetSitemapsFiles = this.TargetSitemapsFiles.ToStringArray(),
                TargetUrls = this.TargetUrls.ToStringArray(),
                TargetProjectFiles = this.TargetProjectFiles.ToStringArray(),
                UrlReplacementArgs = this.UrlReplacementArgs.ToStringArray(),
                OutputPath = this.OutputPath,
                OutputFormat = this.OutputFormat,
                ValidatorUrl = this.ValidatorUrl,
                DirectInputMode = this.DirectInputMode,
                CharSet = this.CharSet,
                DocType = this.DocType,
                Verbose = this.Verbose,
                Debug = this.Debug,
                ShowSource = this.ShowSource,
                Outline = this.Outline,
                GroupErrors = this.GroupErrors,
                UseHtmlTidy = this.UseHtmlTidy
            };

            // Setup the container to use the context as a singleton so it is available everywhere.
            container.Configure(r => r.For<IHtmlValidatorRunnerContext>().Singleton().Use(x => context));
            container.Configure(r => r.For<IValidatorRunnerContext>().Singleton().Use(x => context));
            container.Configure(r => r.For<IRunnerContext>().Singleton().Use(x => context));

            var runner = container.GetInstance<IValidatorRunner>();

            Log.LogMessage(MessageImportance.Low, "Starting Runner");

            try
            {
                // get output information (errors, warnings)
                var report = runner.Execute();

                this.TotalErrors = report.TotalErrors;
                this.TotalWarnings = report.TotalWarnings;
            }
            catch (Exception ex)
            {
                Log.LogError("While executing validation the following error was encountered: {0}, {1}", ex.Message, ex.StackTrace);
                return false;
            }

            return true;
        }
 public T GetContainerInstance <T>()
 {
     return(_container.GetInstance <T>());
 }
 public static T GetService <T>()
 {
     return(Container.GetInstance <T>());
 }
Пример #23
0
        static void Main(string[] args)
        {
            var container = new StructureMap.Container();

            Func<Type, object> serviceLocator = new Func<Type, object>(
                (type) =>
                    {
                        return container.GetInstance(type);
                    }
                );

            ApplicationBus.Bus.Instance.UseServiceLocator(serviceLocator);

            var configuration = ServiceBusFactory.New(x =>
            {
                //x.LogTo<String>();
                //x.UseDataprovider<Type>();
                //x.what else

                x.AddEndPoint(e =>
                {
                    e.UseQueueClient<TimeEcoQueueClient>("End Point 1");
                    e.DeSerializeTo<TimeMessage>();
                    e.UseSerializer<EndPoint.XmlDeserializer>();
                    // e.UseObjectRouter<String>();
                });

                x.AddEndPoint(e =>
                {
                    e.UseQueueClient<TimeEcoQueueClient>("End Point 2");
                    e.DeSerializeTo<TimeMessage>();
                    e.UseSerializer<EndPoint.XmlDeserializer>();
                    // e.UseObjectRouter<String>();
                });

                x.AddEndPoint(e =>
                {
                    e.UseQueueClient<TimeEcoQueueClient>("End Point 3");
                    e.DeSerializeTo<TimeMessage>();
                    e.UseSerializer<EndPoint.XmlDeserializer>();
                    // e.UseObjectRouter<String>();
                });

                x.AddEndPoint(e =>
                {
                    e.UseQueueClient<TimeEcoQueueClient>("End Point 4");
                    e.DeSerializeTo<TimeMessage>();
                    e.UseSerializer<EndPoint.XmlDeserializer>();
                    // e.UseObjectRouter<String>();
                });

                x.AddEndPoint(e =>
                {
                    e.UseQueueClient<TimeEcoQueueClient>("End Point 5");
                    e.DeSerializeTo<TimeMessage>();
                    e.UseSerializer<EndPoint.XmlDeserializer>();
                    // e.UseObjectRouter<String>();
                });

                x.AddEndPoint(e =>
                {
                    e.UseQueueClient<TimeEcoQueueClient>("End Point 6");
                    e.DeSerializeTo<TimeMessage>();
                    e.UseSerializer<EndPoint.XmlDeserializer>();
                    // e.UseObjectRouter<String>();
                });
            });

             //   ApplicationBus.Bus.RegisterHandlerForCommand<TimeMessage, TimeHandler>();

            var host = HostFactory.New(x =>
            {
                x.Service<ServiceBusHost>(s =>
                {
                    s.SetServiceName("Service Bus Host");

                    s.ConstructUsing(name => ServiceBusFactory.CreateHost(configuration));
                    s.WhenStarted(svc => svc.Start());
                    s.WhenStopped(svc => svc.Stop());
                });
                x.RunAsLocalSystem();
                x.SetDescription("Service Bus Host");
                x.SetDisplayName("Service Bus Host");
                x.SetServiceName("Service Bus Host");
            });

            host.Run();
        }