diff --git a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectDependencyResolver.cs b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectDependencyResolver.cs new file mode 100644 index 0000000..0f2eb01 --- /dev/null +++ b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectDependencyResolver.cs @@ -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()); + } + } +} \ No newline at end of file diff --git a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectDependencyScope.cs b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectDependencyScope.cs new file mode 100644 index 0000000..9bf3c16 --- /dev/null +++ b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectDependencyScope.cs @@ -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 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; + } + } +} \ No newline at end of file diff --git a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectHelper.cs b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectHelper.cs new file mode 100644 index 0000000..1f5f7f6 --- /dev/null +++ b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/NinjectHelper.cs @@ -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() + { + return Kernel.Get(); + } + + public IEnumerable GetAll() + { + return Kernel.GetAll(); + } + } +} \ No newline at end of file diff --git a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Service1.cs b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Service1.cs index 3838c69..1ed6272 100644 --- a/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Service1.cs +++ b/DataCenter_Windows/WindowsDataCenter/WindowsDataCenter/Service1.cs @@ -152,100 +152,4 @@ namespace WindowsDataCenter public List 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 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() - { - return _kernel.Get(); - } - - public IEnumerable GetAll() - { - return _kernel.GetAll(); - } - } }