FlexitimeTracker/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectDependencyScope.cs

44 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Web.Http.Dependencies;
using Ninject;
using Ninject.Syntax;
namespace WindowsDataCenter
{
// Provides a Ninject implementation of IDependencyScope
// which resolves services using the Ninject container.
public class NinjectDependencyScope : IDependencyScope
{
IResolutionRoot _resolver;
public NinjectDependencyScope(IResolutionRoot resolver)
{
_resolver = resolver;
}
public object GetService(Type serviceType)
{
if (_resolver == null)
throw new ObjectDisposedException("this", "This scope has been disposed");
return _resolver.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
if (_resolver == null)
throw new ObjectDisposedException("this", "This scope has been disposed");
return _resolver.GetAll(serviceType);
}
public void Dispose()
{
IDisposable disposable = _resolver as IDisposable;
disposable?.Dispose();
_resolver = null;
}
}
}