Skip to content

Instantly share code, notes, and snippets.

@gon250
Created March 19, 2015 15:55
Show Gist options
  • Save gon250/fb62484e931f6666a985 to your computer and use it in GitHub Desktop.
Save gon250/fb62484e931f6666a985 to your computer and use it in GitHub Desktop.
Ninject
using Ninject;
using MMWebsites.DAL.Helpers;
using MMWebsites.DAL.Repository;
using MMWebsites.Global.Contracts;
using MMWebsites.Global.Helpers;
namespace MMWebsites.IoC
{
public class DependencyInjectionProvider
{
private IKernel _kernel;
private void SetUpDependencyInjection()
{
//create _kernel
_kernel = new StandardKernel();
//bindings
_kernel.Bind<IJsDateHelper>().To<JsDateHelper>();
_kernel.Bind<IDbHelper>().To<DbHelper>();
_kernel.Bind<IUserRepository>().To<UserRepository>();
_kernel.Bind<ISiteRepository>().To<SiteRepository>();
_kernel.Bind<IClientDetailsRepository>().To<ClientDetailsRepository>();
_kernel.Bind<IFileDetailsRepository>().To<FileDetailsRepository>();
_kernel.Bind<IPublicationRepository>().To<PublicationRepository>();
_kernel.Bind<ICompanyRepository>().To<CompanyRepository>();
_kernel.Bind<IUserDetails>().To<UserDetailsRepository>();
}
public T Resolve<T>(System.Type service) {
return (T)_kernel.Get(service);
}
public void Dispose()
{
_kernel.Dispose();
}
public System.Web.Mvc.IDependencyResolver GetMvcDependencyResolver()
{
SetUpDependencyInjection();
return new MvcDependencyResolver(_kernel);
}
public System.Web.Http.Dependencies.IDependencyResolver GetHttpDependencyResolver()
{
SetUpDependencyInjection();
return new HttpDependencyResolver(_kernel);
}
}
}
using MMWebsites.IoC;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
namespace MMWebsites.CMS
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
var dependencyInjectionProvider = new DependencyInjectionProvider();
// Set MVC depencendy resolver for asp mvc web project
DependencyResolver.SetResolver(dependencyInjectionProvider.GetMvcDependencyResolver());
// Set MVC depencendy resolver for asp mvc web API project
GlobalConfiguration.Configuration.DependencyResolver = dependencyInjectionProvider.GetHttpDependencyResolver();
// Remove the XM Formatter from the web api
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
}
using System;
using System.Collections.Generic;
using System.Web.Http.Dependencies;
using Ninject;
using Ninject.Syntax;
namespace MMWebsites.IoC
{
public class HttpDependencyResolver : IDependencyResolver
{
private readonly IResolutionRoot _resolutionRoot;
public HttpDependencyResolver(IResolutionRoot kernel)
{
this._resolutionRoot = kernel;
}
public object GetService(Type serviceType)
{
return _resolutionRoot.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return _resolutionRoot.GetAll(serviceType);
}
public IDependencyScope BeginScope()
{
// This example does not support child scopes, so we simply return 'this'.
return this;
}
public void Dispose()
{
// When BeginScope returns 'this', the Dispose method must be a no-op.
}
}
}
using System;
using System.Collections.Generic;
using System.Web.Mvc;
using Ninject;
using Ninject.Syntax;
namespace MMWebsites.IoC
{
public class MvcDependencyResolver : IDependencyResolver
{
private readonly IResolutionRoot _resolutionRoot;
public MvcDependencyResolver(IResolutionRoot kernel)
{
this._resolutionRoot = kernel;
}
public object GetService(Type serviceType)
{
return _resolutionRoot.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return _resolutionRoot.GetAll(serviceType);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment