コード例 #1
0
        public void eject_a_disposable_object()
        {
            var disposable = Substitute.For <IDisposable>();
            var instance   = new ObjectInstance(disposable);

            cache.Set(typeof(IWidget), instance, disposable);

            cache.Eject(typeof(IWidget), instance);

            cache.Has(typeof(IWidget), instance).ShouldBeFalse();

            disposable.Received().Dispose();
        }
コード例 #2
0
        public void eject_a_disposable_object()
        {
            var disposable = MockRepository.GenerateMock <IDisposable>();
            var instance   = new ObjectInstance(disposable);

            cache.Set(typeof(IWidget), instance, disposable);

            cache.Eject(typeof(IWidget), instance);

            cache.Has(typeof(IWidget), instance).ShouldBeFalse();

            disposable.AssertWasCalled(x => x.Dispose());
        }
コード例 #3
0
        void IDisposable.Dispose()
        {
            _families.Each(
                family =>
            {
                family.Value.Instances.Each(instance =>
                {
                    _singletonCache.Eject(family.Value.PluginType, instance);
                    if (instance is IDisposable)
                    {
                        instance.SafeDispose();
                    }
                });
            });


            _profiles.Each(x => x.SafeDispose());
            _profiles.Clear();

            var containerFamily = _families[typeof(IContainer)];

            PluginFamily c;

            _families.TryRemove(typeof(IContainer), out c);
            containerFamily.RemoveAll();

            _missingTypes.Clear();

            _families.Each(x => x.SafeDispose());
            _families.Clear();
        }
コード例 #4
0
        void IDisposable.Dispose()
        {
            _families.Each(family => {
                family.Instances.Each(instance => {
                    _singletonCache.Eject(family.PluginType, instance);
                });
            });


            _profiles.Each(x => x.SafeDispose());
            _profiles.Clear();

            var containerFamily = _families[typeof(IContainer)];

            _families.Remove(typeof(IContainer));
            containerFamily.RemoveAll();

            _families.Each(x => x.SafeDispose());
            _families.ClearAll();
        }