2010-11-21 5 views
1

Fondamentalement, je voudrais un moyen d'exprimer: Trouver toutes les classes avec la classe de base AbstractDataService<> et les résoudre par leur interface et non par leur classe de base.
J'ai actuellement cela et il fonctionne, mais il est pas très élégante:Y a-t-il une meilleure façon d'exprimer cette inscription fluide à Windsor?

container.Register(AllTypes.Pick() 
    .FromAssembly(typeof(AbstractDataService<>).Assembly) 
    .If(Component.IsInSameNamespaceAs(typeof(AbstractDataService<>))) 
    .WithService.FirstInterface()); 

Est-il possible?

+0

Ça me va bien ... pourquoi dites-vous que ce n'est pas élégant? –

+0

@Mauricio Scheffer: Il me manque quelque chose comme HasBaseOf (typeof (AbstractDataService <>)). –

Répondre

0

Vous pouvez créer des variables intermédiaires. Mais ... je ne suis pas vraiment sûr du vrai problème. Les choses complexes semblent complexes. C'est la réalité.

+0

Mais même des choses complexes peuvent être simplifiées grâce à des aides que je ne connais pas. –

1

Peut-être pourriez-vous utiliser .BasedOn (...)?

+0

Mais BasedOn pour une raison quelconque renvoie tous les types dans mon espace de noms si je commente .If (Component.IsInSameNamespaceAs (typeof (AbstractDataService <>))). –