Castle Windsor:注册具有相同构造函数参数的接口的所有实现

时间:2012-07-26 13:40:02

标签: .net inversion-of-control castle-windsor castle

我有相同接口的多个实现,它们都具有相同的构造函数参数(strConn)。是否可以使用1 container.Register调用注册所有实现?

这就是我所拥有的:

container.Register(
            Classes.FromAssemblyContaining<IUserMenuDao>()
                .BasedOn<IDataAccess>().WithService.FromInterface()
            );

这些实现都具有相同的构造函数参数;创建失败。注册一个将是:

container.Register(Component.For<IUserMenuDao>()
                               .DependsOn(new {strConn = ConfigurationManager.ConnectionStrings["ABC123"].ConnectionString})
                               .ImplementedBy<UserMenuDaoSqlServerImpl>());

有没有办法按惯例注册类似于代码示例#1但是对所有实现使用DependsOn?

1 个答案:

答案 0 :(得分:6)

是的确是

container.Register( 
    Classes.FromAssemblyContaining<IUserMenuDao>() 
         .BasedOn<IDataAccess>()
         .WithService.FromInterface() 
         .Configure(c => c.DependsOn(new {strConn = ConfigurationManager.ConnectionStrings["ABC123"].ConnectionString}))
    );