2013년 8월 9일 금요일

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

1. 프로젝트에 다음 클래스를 추가한다.-----------------------------
  1. using Ninject;
  2. using SportsStore.Domain.Abstract;
  3. using System;
  4. using System.Web.Mvc;
  5.  
  6. namespace SportsStore.WebUI.Infrastructure
  7. {
  8. public class NinjectControllerFactory : DefaultControllerFactory
  9. {
  10. private IKernel ninjectKernel;
  11.  
  12. public NinjectControllerFactory()
  13. {
  14. ninjectKernel = new StandardKernel();
  15. AddBindings();
  16. }
  17. protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
  18. {
  19. return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
  20. }
  21. private void AddBindings()
  22. {
  23. // 아래와 같이 추가 바인딩을 넣는다
  24. ninjectKernel.Bind<IProductRepository>().To<IProductRepository>();
  25. }
  26. }
  27. }

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


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

댓글 없음:

댓글 쓰기