当类从类相同的基类继承时,使用Castle Windsor注入依赖项

时间:2012-02-11 04:37:39

标签: castle-windsor castle

我有两个继承自同一基类的类。

public class UserDetailValidator : BaseValidator<UserDetail>{
    public UserDetailValidator(IRepository<Person, Guid> userRepository, AddressValidator addressValidator)
    {
        RuleFor(x => x.FirstName).Length(1, 10);
    }
}

public class AddressValidator : BaseValidator<Address>

当我尝试从WindsorServiceLocator获取UserDetailValidator时,我收到错误

缺少依赖性。 组件UserDetailValidator依赖于AddressValidator,无法解析。 确保依赖项在容器中作为服务正确注册,或者作为内联参数提供。我在ValidationInstaller中使用以下内容。

container.Register(
AllTypes.FromAssemblyNamed("Validation")
        .IncludeNonPublicTypes()
    .BasedOn(typeof(IValidator<>))
    .WithService.AllInterfaces()
    .LifestyleTransient()

注入IRepository组件没有任何问题。只有AddressValidator没有进来。我做得不好?我正在使用Castle Windsor 3.0

1 个答案:

答案 0 :(得分:0)

我改变了传递的Argument的类型 从AddressValidator到IValidator的UserDetailValidator。 我仍然必须使用AllInterfaces(至少在我的测试中),但是 它现在有效。