2012-02-11 90 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(至少在目前爲止我的測試中),但現在它的工作原理是 。