Ninject je open source DI framework, besplatan za ličnu i komercijalnu upotrebu. U .Net zajednici možda i najpopularniji. Odlikuje ga jednostavna i simpatična sintaksa, kao i vrlo dobra dokumentacija koja do detalja objašnjava njegovu upotrebu.
Jednostavna implementacija IDependencyResolver interfejsa pomoću Ninject DI framework-a bi izgledala ovako:
public class NinjectDependencyResolver : IDependencyResolver { private readonly IKernel kernel; public NinjectDependencyResolver(IKernel kernel) { this.kernel = kernel; } public object GetService(Type serviceType) { try { return this.kernel.Get(serviceType); } catch { return null; } } public IEnumerable<object> GetServices(Type serviceType) { try { return this.kernel.GetAll(serviceType); } catch { return new List<object>(); } } }
Na kraju, potrebno je podesiti IoC kontejner unutar Global.asax.cs fajla:
protected void Application_Start() { RegisterNinjectDependencyResolver(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } private void RegisterNinjectDependencyResolver() { var kernel = new StandardKernel(); kernel.Bind<IRepository>().To<ConcreteRepository>(); DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel)); }