44 lines
1.2 KiB
C#
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;
|
|
}
|
|
}
|
|
} |