使用 Ninject IOC 屬性簡單注入

  1. 下載Niject.dll


 2.新建  控制器工廠



public class ControllerFactory : DefaultControllerFactory 
{   
 private IKernel ninjectKernel;   
 public NinjectControllerFactory()
 {
        ninjectKernel = new StandardKernel();
        AddBindings();
    }    
    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType) 
    {        
    return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
    }   
     private void AddBindings() 
     {  
     
           // todo:後面再來添加綁定   
                       _kernel.Bind<IUserService>().To<UserService>();
            _kernel.Bind<IRoleService>().To<RoleService>();
            _kernel.Bind<IDepartmentService>().To<DepartmentService>();
            _kernel.Bind<IUserRoleService>().To<UserRoleService>();
            _kernel.Bind<IUserDepartmentService>().To<UserDepartmentService>();
            _kernel.Bind<IDepartmentTypeService>().To<DepartmentTypeService>();
            _kernel.Bind<IProjectInforService>().To<ProjectInforService>();
            _kernel.Bind<IPerformanceService>().To<PerformanceService>();


            _kernel.Bind<IUserRepository>().To<UserRepository>();
            _kernel.Bind<IRoleRepository>().To<RoleRepository>();
            _kernel.Bind<IDepartmentRepository>().To<DepartmentRepository>();
            _kernel.Bind<IUserRoleRepository>().To<UserRoleRepository>();
            _kernel.Bind<IUserDepartmentRepository>().To<UserDepartmentRepository>();
            _kernel.Bind<IDepartmentTypeRepository>().To<DepartmentTypeRepository>();
            _kernel.Bind<IProjectInforRepository>().To<ProjectInforRepository>();
            _kernel.Bind<IPerformanceRepository>().To<PerformanceRepository>();


            _kernel.Bind<DataContext>().To<DataContext>();
           
       }
}


3 註冊
protected void Application_Start()
 {
    ......    //設置Controller工廠
    ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
}


還有一種方法屬性注入

public class NinjectDependencyResolver:System.Web.Mvc.IDependencyResolver
    {        private readonly IKernel _kernel;        public NinjectDependencyResolver()
        {
            _kernel=new StandardKernel();
            AddBindings();
        }       
        private void AddBindings()
        {
          //同上
        }       
         public object GetService(Type serviceType)
        {           
         return _kernel.TryGet(serviceType);
        }       
         public IEnumerable<object> GetServices(Type serviceType)
        {           
         return _kernel.GetAll(serviceType);
        }
    }
    
    3 註冊
    protected void Application_Start()
 {
    DependencyResolver.SetResolver(new Code.NinjectDependencyResolver());//註冊Ioc容器
    
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章