2013년 8월 9일 금요일

DI컨테이너 사용방법(Ninject)

1. 프로젝트에 다음 클래스를 추가한다.-----------------------------
using Ninject;
using SportsStore.Domain.Abstract;
using System;
using System.Web.Mvc;

namespace SportsStore.WebUI.Infrastructure
{
 public class NinjectControllerFactory : DefaultControllerFactory
 {
  private IKernel ninjectKernel;

  public NinjectControllerFactory()
  {
   ninjectKernel = new StandardKernel();
   AddBindings();
  }
  protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
  {
   return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
  }
  private void AddBindings()
  {
   // 아래와 같이 추가 바인딩을 넣는다
   ninjectKernel.Bind<IProductRepository>().To<IProductRepository>();
  }
 }
}

2. Global.asax.cs의 Application_Start메서드에 다음 코드를 추가한다.
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());


Ninject사용에 필요한 사전준비는 끝났다.

댓글 없음:

댓글 쓰기