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()); }
public TrackingDisposable(Int32 i) { DebugLogger.Log($"~ctor {i}"); }
public void Dispose() { DebugLogger.Log($"~dispose {Value}"); ++DestructorIndex; }
public void Dispose() { DebugLogger.Log($"~dispose {Value}"); ++DestructorCallsCount; }