public class EmployeeController : Controller
{
//其他成员
public IEmployeeRepository Repository { get; private set; }
public EmployeeController(IEmployeeRepository repository)
{
thisRepository = repository;
}
}
为了让ASPNET MVC的Controller激活系统采用我们自定义的ControllerActivator来创建目标Controller我们需要创建并注册一个相应的DefaultControllerFactory对象如下面的代码片段所示我们在Globalasax中创建一个NinjectControllerActivator对象并注册了接口IEmployeeRepository和实现类型EmployeeRepository之间的匹配关系最后据此创建一个DefaultControllerFactory对象通过当前的ControllerBuilder进行注册
public class MvcApplication : SystemWebHttpApplication
{
protected void Application_Start()
{
//其他成员
NinjectControllerActivator controllerActivator =
new NinjectControllerActivator()
controllerActivatorRegister<IEmployeeRepository EmployeeRepository>()
DefaultControllerFactory controllerFactory =
new DefaultControllerFactory(controllerActivator)
ControllerBuilderCurrentSetControllerFactory(controllerFactory)
}
}
再次运行我们的程序依然会得到如图所示的结果其实自定义ControllerActivator实现IoC的方式并不是很常用接下来我们介绍第三种更加常用的IoC实现方式
返回目录ASPNET MVC 框架揭秘
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
Java程序性能优化让你的Java程序更快更稳定
Visual C++音频/视频技术开发与实战
[] []