예제 #1
0
        public void DryIocTest_Issue81()
        {
            var container = new Container();
            var id        = 1000;

            container.RegisterDelegate((c) => ++ id);
            container.Register <TrackingDisposable>(Reuse.Scoped);
            var childContainer = container.OpenScope();


            Assert.AreEqual(1, childContainer.Resolve <TrackingDisposable>().Value);
            Assert.AreEqual(1, childContainer.Resolve <TrackingDisposable>().Value);
            Assert.AreEqual(1, childContainer.Resolve <TrackingDisposable>().Value);
            Assert.AreEqual(3, TrackingDisposable.ConstructorIndex);

            var childContainer2 = container.OpenScope();

            Assert.AreEqual(4, childContainer2.Resolve <TrackingDisposable>().Value);
            Assert.AreEqual(4, childContainer2.Resolve <TrackingDisposable>().Value);
            Assert.AreEqual(4, childContainer2.Resolve <TrackingDisposable>().Value);
            Assert.AreEqual(6, TrackingDisposable.ConstructorIndex);

            DebugLogger.Log("extra calls #81 for scope; ignore IDisposable");
            Assert.AreEqual(0, TrackingDisposable.DestructorIndex);

            Assert.Pass(DebugLogger.String());
        }
예제 #2
0
 public TrackingDisposable(Int32 i)
 {
     DebugLogger.Log($"~ctor {i}");
 }
예제 #3
0
 public void Dispose()
 {
     DebugLogger.Log($"~dispose {Value}");
     ++DestructorIndex;
 }
예제 #4
0
 public void Dispose()
 {
     DebugLogger.Log($"~dispose {Value}");
     ++DestructorCallsCount;
 }