2012-02-11 86 views
0

我有两个类从同一个基类继承。当类继承相同的基类时,使用Castle Windsor注入依赖关系

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

回答

0

我将通过 传递给UserDetailValidator的参数的类型从AddressValidator更改为IValidator。 我仍然必须使用AllInterfaces(至少在目前为止我的测试中),但现在它的工作原理是 。