public void FactoryObjectReturnTheSameObject_Success()
        {
            var c = new Container();
            var emptyClass = new EmptyClass();
            var sampleClass = new SampleClass(emptyClass);
            c.RegisterType<SampleClass>(() => sampleClass).AsSingleton();

            var sampleClass1 = c.Resolve<SampleClass>(ResolveKind.FullEmitFunction);
            var sampleClass2 = c.Resolve<SampleClass>(ResolveKind.FullEmitFunction);

            Assert.AreEqual(sampleClass1, sampleClass2);
            Assert.AreEqual(emptyClass, sampleClass1.EmptyClass);
            Assert.AreEqual(emptyClass, sampleClass2.EmptyClass);
        }
        public void FactoryObjectReturnTheSameObject_Success()
        {
            var c = new Container();
            var emptyClass = new EmptyClass();
            ISampleClass sampleClass = new SampleClass(emptyClass);
            c.RegisterType<ISampleClass>(() => sampleClass).AsPerHttpContext();

            var controller = new DefaultController();
            HttpContext.Current = new HttpContext(new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()));
            var result1 = controller.ResolveObject<ISampleClass>(c, ResolveKind.PartialEmitFunction);
            var sampleClass1 = (ISampleClass)((ViewResult)result1).Model;
            var result2 = controller.ResolveObject<ISampleClass>(c, ResolveKind.PartialEmitFunction);
            var sampleClass2 = (ISampleClass)((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();
            var emptyClass = new EmptyClass();
            ISampleClass sampleClass = new SampleClass(emptyClass);
            c.RegisterType<ISampleClass>(() => sampleClass).AsPerThread();
            ISampleClass sampleClass1 = null;
            ISampleClass sampleClass2 = null;

            var thread = new Thread(() => {
                sampleClass1 = c.Resolve<ISampleClass>(ResolveKind.PartialEmitFunction);
                sampleClass2 = c.Resolve<ISampleClass>(ResolveKind.PartialEmitFunction);
            });
            thread.Start();
            thread.Join();

            Assert.AreEqual(sampleClass1, sampleClass2);
            Assert.AreEqual(emptyClass, sampleClass1.EmptyClass);
            Assert.AreEqual(emptyClass, sampleClass2.EmptyClass);
        }
 public void FillClasses(EmptyClass emptyClass, SampleClass sampleClass)
 {
     EmptyClass = emptyClass;
     SampleClass = sampleClass;
 }
 public void FillSampleClass(SampleClass sampleClass)
 {
     SampleClass = sampleClass;
 }