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."); } }
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>()); }
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); }
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>(); }
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); }
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); }
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);; }
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>()); }
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); }
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))); }); }
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>()); }
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(); }