static void Main(string[] args) { // REGISTRATION var container = new Container(); // Register MasterCard conrete type to ICreditCard container.Configure(x => x.For <ICreditCard>().Use <MasterCard>()); // Shopper class has ICreditCard in it's constructor // IoC will automatically get concrete type to MasterCard var shopper = container.GetInstance <Shopper>(); shopper.Charge(); // LIFECYCLE // Default lifecycle is "PerRequest" // Specify your own this way container.Configure(x => x.For <ICreditCard>().LifecycleIs(new SingletonLifecycle())); // FEATURES // TryGet => see if available => returns null if ICreditCard is NOT registered container.TryGetInstance <ICreditCard>(); // Debugging => will show you what you have in container Console.WriteLine(container.WhatDoIHave()); // Put registration into one registry class container = new Container(new MyRegistry()); }
public async Task Options_Configure_Child_Resolve_Child_Using_TenantContainerAdaptor() { ServiceCollection services = new ServiceCollection(); services.AddLogging(); // ServiceProvider serviceProvider = services.BuildServiceProvider(); StructureMap.Container container = new StructureMap.Container(); Dotnettency.Container.StructureMap.ContainerExtensions.Populate(container, services); var adaptedContainer = container.GetInstance <ITenantContainerAdaptor>(); var containerEventsPublisher = container.TryGetInstance <ITenantContainerEventsPublisher <MyTenant> >(); container.Configure(_ => _.For <ITenantContainerBuilder <MyTenant> >() .Use(new TenantContainerBuilder <MyTenant>(services, adaptedContainer, (s, t) => { t.AddOptions(); t.Configure <MyOptions>((a) => { a.Prop = true; }); }, containerEventsPublisher)) ); // container.Populate(services); var tenantContainerBuilder = adaptedContainer.GetRequiredService <ITenantContainerBuilder <MyTenant> >(); var tenantContainer = await tenantContainerBuilder.BuildAsync(new MyTenant()); IOptions <MyOptions> options = tenantContainer.GetRequiredService <IOptions <MyOptions> >(); Assert.True(options.Value?.Prop); }
public bool TryResolve(Type type, object data, out object value) { if (data is null) { value = _container.TryGetInstance(type); return(value != null); } if (data is IDictionary <string, object> ) { value = _container.TryGetInstance(type, new ExplicitArguments((IDictionary <string, object>)data)); return(value != null); } throw new NotSupportedException(); }
static void Main(string[] args) { // REGISTRATION var container = new Container(); // Register MasterCard conrete type to ICreditCard container.Configure(x => x.For <ICreditCard>().Use <MasterCard>()); // Shopper class has ICreditCard in it's constructor // IoC will automatically get concrete type to MasterCard var shopper = container.GetInstance <Shopper>(); shopper.Charge(); // LIFECYCLE // Default lifecycle is "PerRequest" // Specify your own this way container.Configure(x => x.For <ICreditCard>().LifecycleIs(new SingletonLifecycle())); // FEATURES // TryGet => see if available => returns null if ICreditCard is NOT registered container.TryGetInstance <ICreditCard>(); // Debugging => will show you what you have in container Console.WriteLine(container.WhatDoIHave()); sContainer = new Container(); sContainer.Configure(x => x.For <ICreditCard>().Use <MasterCard>()); // Put registration into one registry class container = new Container(new MyRegistry()); // Testing named instance var classA = container.GetInstance <ClassA>(); var classB = container.GetInstance <ClassB>(); //var c = new StructureMap.Container(ce => //{ // ce.ForRequestedType<ICreditCard>().TheDefaultIsConcreteType<VisaCard>(); //}); //var test = c.GetInstance<ICreditCard>(); //var mock = new Mock<Container>(); //var t1 = mock.Setup(x => x.GetInstance<ICreditCard>()).Returns(new VisaCard()); //IoC.Initialize(); //var ccc = IoC.container.GetInstance<ICreditCard>(); var mock = new Mock <IContainer>(); var tt = mock.Object; mock.Setup(x => x.GetInstance <ICreditCard>()).Returns(new MasterCard()); //var tt2 = mock.Object.GetInstance<ICreditCard>(); var worker = new Worker(); worker.Work(mock.Object); var m = new Mock <HttpContextBase>(); //var t2 = m.Setup(x => x.Request).Returns(); }