您好我使用windsor作为DI容器,
我的代码在
之下public static class ContainerBuilder
{
public static IWindsorContainer Build()
{
var container = new WindsorContainer("Configuration\\Windsor.config");
// automatically register controllers
container.Register(AllTypes
.Of<Controller>()
.FromAssembly(Assembly.GetExecutingAssembly())
.Configure(c => c.LifeStyle.Transient.Named(c.Implementation.Name.ToLower())));
container.Register(
Component.For<IServiceLocator>().Instance(new WindsorServiceLocator(container)),
Component.For(typeof(IRepository<>)).ImplementedBy(typeof(NHibernateRepository<>)).LifeStyle.Transient
);
return container;
}
}
我需要从一个测试项目中调用它,问题是当我这样做时,从未找到windsor.config并且测试似乎总是失败,放置此配置文件的最佳方式是哪里还是有这样做的更好方法? 感谢
答案 0 :(得分:0)
只需配置配置路径,例如
public static IWindsorContainer Build(string configPath) {
var container = new WindsorContainer(configPath);
...
}
在你的应用程序中,configPath是“Configuration \ Windsor.config”,而在你的测试中,你将拥有类似“.... \ Configuration \ Windsor.config”的路径。
请注意,除非您正在运行某些集成测试,否则通常不应该依赖于测试中的容器。
另外,静态容器构建器似乎不是一个好主意,请查看Windsor Installers以模块化方式注册组件。