【发布时间】:2012-02-04 14:57:33
【问题描述】:
我的 global.axax 中有代码:
protected void Application_Start()
{
WindsorContainer = new WindsorContainer();
WindsorContainer.Install(FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.RelativeSearchPath)));
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(WindsorContainer.Kernel));
//...
}
当我调试 global.asax 时,代码 FromAssembly.InDirectory(newAssemblyFilter(AppDomain.CurrentDomain.RelativeSearchPath)) 会找到我所有的项目 dll(有 7 个 dll)。
其中3个包含IWindsorInstaller接口的实现,例如:
class WindsorInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
var services = AllTypes.FromThisAssembly().Where(type => type.Name.EndsWith("Service"));
container.Register(services
.WithService.DefaultInterfaces()
.Configure(c => c.LifestyleTransient()));
container.Register(Component.For<ISession>().ImplementedBy<AspnetSession>().
LifeStyle.Transient);
container.Register(Component.For<ICache>().ImplementedBy<AspnetCache>().
LifeStyle.Transient);
}
}
但是当我设置断点时,它只调用了 1 个安装程序,跳过了 2 个其他安装程序。 这很有趣,但我从我复制的代码中得到了另一个工作项目。
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-3 castle-windsor windsor-3.0