public void MakeSure_() { var builder = new StructureMapObjectBuilder(); builder.Configure(typeof(MyBus), DependencyLifecycle.SingleInstance); builder.Configure(typeof(DependsOnIBus), DependencyLifecycle.InstancePerCall); using (var childBuilder = builder.BuildChildContainer()) { //this is the main use case childBuilder.Build(typeof(DependsOnIBus)); //this one is ok childBuilder.Build(typeof(MyBus)); //but this one fails childBuilder.Build(typeof(IBus2)); } Assert.False(((MyBus)builder.Build(typeof(MyBus))).Disposed); }
public void ConfigureService <T>(string[] args) where T : class, IServiceInterface { IRunConfiguration cfg = RunnerConfigurator.New(c => { c.SetServiceName(ServiceName); c.SetDisplayName(DisplayName); c.SetDescription(Description); c.RunAsLocalSystem(); c.DependencyOnMsmq(); c.ConfigureService <T>(typeof(T).Name, s => { MsmqEndpointConfigurator.Defaults(def => def.CreateMissingQueues = true); s.CreateServiceLocator(() => { Container container = new Container(x => { x.AddRegistry(new IocRegistry(SourceQueue, SubscriptionQueue)); ContainerSetup(x); }); IServiceLocator objectBuilder = new StructureMapObjectBuilder(container); ServiceLocator.SetLocatorProvider(() => objectBuilder); return(objectBuilder); }); s.WhenStarted(start => start.Start()); s.WhenStopped(stop => stop.Stop()); }); }); ObjectFactory.AssertConfigurationIsValid(); Runner.Host(cfg, args); }