MVC项目用Windsor注入
第一步创建controler 注入类
public class ApiControllersInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly().BasedOn<IController>().LifestyleTransient());
}
}
第二步创建windsor安装类
public static class WindsorBootstrapper
{
private static IWindsorContainer _container;
public static void Initialize()
{
_container = new WindsorContainer();
_container.Install(
FromAssembly.This(),
FromAssembly.Containing<RepositoriesInstaller>(),
FromAssembly.Containing<ServicesInstaller>());
_container.Register(Component.For<IWindsorContainer>().Instance(_container).LifestyleSingleton());
var controllerFactory = new WindsorControllerFactory(_container.Kernel);
ControllerBuilder.Current.SetControllerFactory(controllerFactory);
}
public static IWindsorContainer Container()
{
return _container;
}
}
第三步创建 WindsorControllerFactory 工厂类
public class WindsorControllerFactory : DefaultControllerFactory
{
private readonly IKernel _kernel;
public WindsorControllerFactory(IKernel kernel)
{
_kernel = kernel;
}
public override void ReleaseController(IController controller)
{
_kernel.ReleaseComponent(controller);
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
throw new HttpException(404, string.Format("The controller for path '{0}' could not be found.", requestContext.HttpContext.Request.Path));
}
return (IController)_kernel.Resolve(controllerType);
}
}
第四步 在 Global.asax 中调用windsor安装类
protected void Application_Start()
{
WindsorBootstrapper.Initialize();
}
最新文章
- 使用Docker Mysql 5.7
- flume坑之channel.transactionCapacity和HdfsSink.batchSize
- python 中md5 和 sha1 加密, md5 + os.urandom 生成全局唯一ID
- iOS获取的NSDate date时间与实际相差8个小时
- php 根据指定的键对多维数组进行排序
- linux查看tomcat版本
- window窗口-button(按钮)-dialog(对话框,带按钮)
- web前端+javascript+h5电子书籍和实战分享
- 【ASP.NET MVC 学习笔记】- 04 依赖注入(DI)
- Dynamics CRM 导入用户数据错误 could not retrieve salesperson role
- c#子类序列化与父类序列化(Serializable)的区别
- PHP中文转拼音函数
- 【Codeforces 1114F】Please, another Queries on Array?
- Android对接微信支付体验
- bzoj 3237 连通图 - 并查集 - 线段树
- 【WPF】添加自定义字体
- 因修改/etc/sudoers权限导致sudo和su不能使用的解决方法
- 关于web.xml中的<;welcome-file-list>;中的默认首页资料
- 使用ShardingJdbc分表
- 1088 Rational Arithmetic