Like the all other DI containers, it will dispose IDisposable instances for you with respecting life time of instance.
In your stuation, if instance is registered as Scoped
(Instance Per Request). It will dispose this instance after request is completed.
Edit:
In official documents they don't mention this.
So Let's check source code to be sure:
When a scope is created, ServiceScopeFactory returns a new ServiceScope which is depended with ServiceProvider and disposable.
ServiceProvider
has private List<IDisposable> _transientDisposables;
which keeps disposable services when TransientCallSite
is invoke
d in CaptureDisposable
method. Also ServiceProvider
has private readonly Dictionary<IService, object> _resolvedServices = new Dictionary<IService, object>();
which keeps all services for Scoped
.
When liftime/scope finishes, the ServiceScope
is disposed. Then it disposes ServiceProvider
which disposes all _transientDisposables
and then it checks _resolvedServices
and disposes disposable services in the dictionary in ServiceProvider
.
Edit(13.06.2017): They mention in official documents now. Service Lifetimes
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…