moved NinjectDependencyResolver, NinjectDependencyScope and NinjectHelper to their own files
This commit is contained in:
parent
bc1947a31f
commit
8585f0fe77
@ -0,0 +1,20 @@
|
||||
using System.Web.Http.Dependencies;
|
||||
using Ninject;
|
||||
|
||||
namespace WindowsDataCenter
|
||||
{
|
||||
public class NinjectDependencyResolver : NinjectDependencyScope, IDependencyResolver
|
||||
{
|
||||
readonly IKernel _kernel;
|
||||
|
||||
public NinjectDependencyResolver(IKernel kernel) : base(kernel)
|
||||
{
|
||||
_kernel = kernel;
|
||||
}
|
||||
|
||||
public IDependencyScope BeginScope()
|
||||
{
|
||||
return new NinjectDependencyScope(_kernel.BeginBlock());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
using System.Collections.Generic;
|
||||
using Ninject;
|
||||
|
||||
namespace WindowsDataCenter
|
||||
{
|
||||
public class NinjectHelper
|
||||
{
|
||||
private static NinjectHelper _instance;
|
||||
private static readonly object LockObject = new object();
|
||||
|
||||
public StandardKernel Kernel { get; private set; }
|
||||
|
||||
public static NinjectHelper GetInstance()
|
||||
{
|
||||
if (_instance != null)
|
||||
return _instance;
|
||||
lock (LockObject)
|
||||
{
|
||||
_instance = new NinjectHelper();
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
|
||||
private NinjectHelper()
|
||||
{
|
||||
Kernel = Configuration.ConfigureNinject();
|
||||
}
|
||||
|
||||
public T Get<T>()
|
||||
{
|
||||
return Kernel.Get<T>();
|
||||
}
|
||||
|
||||
public IEnumerable<T> GetAll<T>()
|
||||
{
|
||||
return Kernel.GetAll<T>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -152,100 +152,4 @@ namespace WindowsDataCenter
|
||||
public List<UserObject> Users { get; set; }
|
||||
}
|
||||
|
||||
// Provides a Ninject implementation of IDependencyScope
|
||||
// which resolves services using the Ninject container.
|
||||
public class NinjectDependencyScope : IDependencyScope
|
||||
{
|
||||
IResolutionRoot resolver;
|
||||
|
||||
public NinjectDependencyScope(IResolutionRoot resolver)
|
||||
{
|
||||
this.resolver = resolver;
|
||||
}
|
||||
|
||||
public object GetService(Type serviceType)
|
||||
{
|
||||
if (resolver == null)
|
||||
throw new ObjectDisposedException("this", "This scope has been disposed");
|
||||
|
||||
return resolver.TryGet(serviceType);
|
||||
}
|
||||
|
||||
public System.Collections.Generic.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;
|
||||
if (disposable != null)
|
||||
disposable.Dispose();
|
||||
|
||||
resolver = null;
|
||||
}
|
||||
}
|
||||
|
||||
// This class is the resolver, but it is also the global scope
|
||||
// so we derive from NinjectScope.
|
||||
public class NinjectDependencyResolver : NinjectDependencyScope, IDependencyResolver
|
||||
{
|
||||
IKernel kernel;
|
||||
|
||||
public NinjectDependencyResolver(IKernel kernel) : base(kernel)
|
||||
{
|
||||
this.kernel = kernel;
|
||||
}
|
||||
|
||||
public IDependencyScope BeginScope()
|
||||
{
|
||||
return new NinjectDependencyScope(kernel.BeginBlock());
|
||||
}
|
||||
}
|
||||
|
||||
public class NinjectHelper
|
||||
{
|
||||
private static NinjectHelper _instance;
|
||||
private static object _lockObject = new object();
|
||||
private StandardKernel _kernel;
|
||||
|
||||
public static NinjectHelper GetInstance()
|
||||
{
|
||||
if (_instance == null)
|
||||
{
|
||||
throw new ArgumentNullException();
|
||||
}
|
||||
return _instance;
|
||||
}
|
||||
public static NinjectHelper GetInstance(SQLiteConnection dbconn)
|
||||
{
|
||||
if (_instance != null)
|
||||
return _instance;
|
||||
lock (_lockObject)
|
||||
{
|
||||
_instance = new NinjectHelper(dbconn);
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
|
||||
private NinjectHelper(SQLiteConnection conn)
|
||||
{
|
||||
_kernel = Configuration.ConfigureNinject(conn);
|
||||
}
|
||||
|
||||
public StandardKernel Kernel { get { return _kernel; } private set { _kernel = value; } }
|
||||
|
||||
public T Get<T>()
|
||||
{
|
||||
return _kernel.Get<T>();
|
||||
}
|
||||
|
||||
public IEnumerable<T> GetAll<T>()
|
||||
{
|
||||
return _kernel.GetAll<T>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user