2010-10-07 4 views
4

J'essaie de trouver comment enregistrer automatiquement les implémentations d'une classe ou d'une interface abstraite générique. Voici mes classes:Castle Windsor Enregistrement de l'interface et des implémentations abstraites

public abstract class AbstractValidator<T> : IValidator<T> 
{ 
    public void Validate(T) 
    { 
     ... 
    } 
} 

public class CustomerValidator:AbstractValidator<Customer> 
{ 
    ... 
} 

Je suis en train de ce qui suit:

_container = new WindsorContainer(); 
_container.Register(
    AllTypes.FromAssemblyContaining<ValidationPatterns>() 
     .BasedOn<IValidator>() 
     .WithService.Base() 
    })); 

IValidator<Customer> val = _container.Resolve<IValidator<Customer>>(); 

Des conseils très appréciés.

Salutations

+0

Et vous obtenez une erreur? Est-ce que ça ne marche pas? – PatrickSteele

+0

Ouais ne fonctionnait pas, mais la réponse ci-dessous l'a résolu – Chev

Répondre

5

Vous êtes proche. Devrait être BasedOn(typeof(IValidator<>)) qui est le type ouvert générique.

Cheers.

+0

Merci beaucoup pour cela. Très cool d'être en mesure d'enregistrer automatiquement tous les services comme celui-ci. J'espère que ce post aidera les autres. À votre santé – Chev

Questions connexes