public void MappingTypeWithScopes() { IDependencyContainer root = CreateContainer(); root.Definitions .AddScoped <IOutputWriter, StringOutputWriter>("S1") .AddScoped <IOutputWriter, ConsoleOutputWriter>("S2"); IOutputWriter writer; using (IDependencyProvider s1 = root.Scope("S1")) { writer = s1.Resolve <IOutputWriter>(); Assert.IsInstanceOfType(writer, typeof(StringOutputWriter)); using (IDependencyProvider s2 = s1.Scope("S2")) { writer = s2.Resolve <IOutputWriter>(); Assert.IsInstanceOfType(writer, typeof(ConsoleOutputWriter)); } writer = s1.Resolve <IOutputWriter>(); Assert.IsInstanceOfType(writer, typeof(StringOutputWriter)); } using (IDependencyProvider s2 = root.Scope("S2")) { writer = s2.Resolve <IOutputWriter>(); Assert.IsInstanceOfType(writer, typeof(ConsoleOutputWriter)); } TryCatchUnResolvable <IOutputWriter>(root); }
public void RegisteredOnlyInsideScope() { IDependencyContainer root = CreateContainer(); root.Definitions .AddScoped <string>("S1", "Hello") .AddScoped <int>("S2", 5); IDependencyDefinition definition; Assert.IsTrue(root.Definitions.TryGet(typeof(string), out definition)); Assert.IsFalse(definition.IsResolvable); Assert.IsTrue(root.Definitions.TryGet(typeof(int), out definition)); Assert.IsFalse(definition.IsResolvable); using (IDependencyContainer s1 = root.Scope("S1")) { Assert.IsTrue(s1.Definitions.TryGet(typeof(string), out definition)); Assert.IsTrue(definition.IsResolvable); Assert.IsTrue(s1.Definitions.TryGet(typeof(int), out definition)); Assert.IsFalse(definition.IsResolvable); using (IDependencyContainer s2 = s1.Scope("S2")) { Assert.IsTrue(s2.Definitions.TryGet(typeof(string), out definition)); Assert.IsTrue(definition.IsResolvable); Assert.IsTrue(s2.Definitions.TryGet(typeof(int), out definition)); Assert.IsTrue(definition.IsResolvable); } Assert.IsTrue(s1.Definitions.TryGet(typeof(string), out definition)); Assert.IsTrue(definition.IsResolvable); Assert.IsTrue(s1.Definitions.TryGet(typeof(int), out definition)); Assert.IsFalse(definition.IsResolvable); } Assert.IsTrue(root.Definitions.TryGet(typeof(string), out definition)); Assert.IsFalse(definition.IsResolvable); Assert.IsTrue(root.Definitions.TryGet(typeof(int), out definition)); Assert.IsFalse(definition.IsResolvable); }
public void Basic() { IDependencyContainer container1 = CreateContainer(); container1.Definitions.AddTransient <IHelloService, HiService>(); IDependencyDefinition definition1; Assert.IsTrue(container1.Definitions.TryGet(typeof(IHelloService), out definition1)); Assert.IsTrue(definition1.IsResolvable); IDependencyContainer container2 = container1.Scope("S1"); Assert.IsTrue(container2.Definitions.TryGet(typeof(IHelloService), out definition1)); Assert.IsTrue(definition1.IsResolvable); container2.Definitions.AddTransient <IOutputWriter, StringOutputWriter>(); Assert.IsTrue(container2.Definitions.TryGet(typeof(IOutputWriter), out definition1)); Assert.IsTrue(definition1.IsResolvable); Assert.IsFalse(container1.Definitions.TryGet(typeof(IOutputWriter), out definition1)); }
public void DependencyInTextScope() { IDependencyContainer root = CreateContainer(); root.Definitions .AddTransient <IHelloService, HiService>() .AddScoped <IMessageFormatter, StringMessageFormatter>("S1"); IHelloService helloService; TryCatchUnResolvable <IHelloService>(root); using (IDependencyProvider s1 = root.Scope("S1")) { TryCatchUnResolvable <IHelloService>(root); helloService = s1.Resolve <IHelloService>(); Assert.IsTrue(s1.TryResolve <IHelloService>(out helloService)); } TryCatchUnResolvable <IHelloService>(root); Assert.IsFalse(root.TryResolve <IHelloService>(out helloService)); }
public void InAnyScope() { Counter.count = 0; IDependencyContainer root = CreateContainer(); root.Definitions .AddScoped <Counter>(); Counter counter; counter = root.Resolve <Counter>(); Assert.AreEqual(1, counter.Count); counter = root.Resolve <Counter>(); Assert.AreEqual(1, counter.Count); using (IDependencyContainer s1 = root.Scope("S1")) { counter = s1.Resolve <Counter>(); Assert.AreEqual(2, counter.Count); counter = s1.Resolve <Counter>(); Assert.AreEqual(2, counter.Count); using (IDependencyContainer s2 = root.Scope("S2")) { counter = s2.Resolve <Counter>(); Assert.AreEqual(3, counter.Count); counter = s2.Resolve <Counter>(); Assert.AreEqual(3, counter.Count); } counter = s1.Resolve <Counter>(); Assert.AreEqual(3, counter.Count); using (IDependencyContainer s2 = root.Scope("S2")) { counter = s2.Resolve <Counter>(); Assert.AreEqual(4, counter.Count); counter = s2.Resolve <Counter>(); Assert.AreEqual(4, counter.Count); } counter = s1.Resolve <Counter>(); Assert.AreEqual(4, counter.Count); } counter = root.Resolve <Counter>(); Assert.AreEqual(4, counter.Count); using (IDependencyContainer s1 = root.Scope("S1")) { counter = s1.Resolve <Counter>(); Assert.AreEqual(5, counter.Count); counter = s1.Resolve <Counter>(); Assert.AreEqual(5, counter.Count); } counter = root.Resolve <Counter>(); Assert.AreEqual(5, counter.Count); }