0

嗨,我使用 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 永远找不到并且测试似乎总是失败,放置此配置文件的最佳方法是哪里,或者有更好的方法这样做?谢谢

4

1 回答 1

0

只需使配置路径可配置,例如

public static IWindsorContainer Build(string configPath) {
  var container = new WindsorContainer(configPath);
  ...
}

在您的应用程序中,configPath 是“Configuration\Windsor.config”,而在您的测试中,您将拥有类似“....\Configuration\Windsor.config”的路径。

请注意,您通常不应该在测试中依赖容器,除非您正在运行一些集成测试。

此外,静态容器构建器似乎不是一个好主意,请查看Windsor Installers以模块化方式注册您的组件。

于 2010-07-08T14:49:48.030 回答