public void FactoryObjectReturnTheSameObject_Success() { var c = new Container(); IEmptyClass emptyClass = new EmptyClass(); var sampleClass = new SampleClassWithInterfaceAsParameter(emptyClass); c.RegisterType<SampleClassWithInterfaceAsParameter>(() => sampleClass).AsSingleton(); var sampleClass1 = c.Resolve<SampleClassWithInterfaceAsParameter>(ResolveKind.PartialEmitFunction); var sampleClass2 = c.Resolve<SampleClassWithInterfaceAsParameter>(ResolveKind.PartialEmitFunction); Assert.AreEqual(sampleClass1, sampleClass2); Assert.AreEqual(emptyClass, sampleClass1.EmptyClass); Assert.AreEqual(emptyClass, sampleClass2.EmptyClass); }
public void FactoryObjectReturnTheSameObject_Success() { var c = new Container(); IEmptyClass emptyClass = new EmptyClass(); ISampleClassWithInterfaceAsParameter sampleClass = new SampleClassWithInterfaceAsParameter(emptyClass); c.RegisterType<ISampleClassWithInterfaceAsParameter>(() => sampleClass).AsPerHttpContext(); var controller = new DefaultController(); HttpContext.Current = new HttpContext(new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter())); var result1 = controller.ResolveObject<ISampleClassWithInterfaceAsParameter>(c, ResolveKind.PartialEmitFunction); var sampleClass1 = (ISampleClassWithInterfaceAsParameter)((ViewResult)result1).Model; var result2 = controller.ResolveObject<ISampleClassWithInterfaceAsParameter>(c, ResolveKind.PartialEmitFunction); var sampleClass2 = (ISampleClassWithInterfaceAsParameter)((ViewResult)result2).Model; Assert.AreEqual(sampleClass1, sampleClass2); Assert.AreEqual(emptyClass, sampleClass1.EmptyClass); Assert.AreEqual(emptyClass, sampleClass2.EmptyClass); }
public void FactoryObjectReturnTheSameObject_Success() { var c = new Container(); IEmptyClass emptyClass = new EmptyClass(); var sampleClass = new SampleClassWithInterfaceAsParameter(emptyClass); c.RegisterType<SampleClassWithInterfaceAsParameter>(() => sampleClass).AsPerThread(); SampleClassWithInterfaceAsParameter sampleClass1 = null; SampleClassWithInterfaceAsParameter sampleClass2 = null; var thread = new Thread(() => { sampleClass1 = c.Resolve<SampleClassWithInterfaceAsParameter>(ResolveKind.PartialEmitFunction); sampleClass2 = c.Resolve<SampleClassWithInterfaceAsParameter>(ResolveKind.PartialEmitFunction); }); thread.Start(); thread.Join(); Assert.AreEqual(sampleClass1, sampleClass2); Assert.AreEqual(emptyClass, sampleClass1.EmptyClass); Assert.AreEqual(emptyClass, sampleClass2.EmptyClass); }