溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用 Ninject IOC 屬性簡單注入

發(fā)布時間:2020-05-25 18:09:49 來源:網(wǎng)絡(luò) 閱讀:704 作者:jaycheer520 欄目:編程語言
  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()
 {
    ......    //設(shè)置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容器
    
}
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI