2010-09-13 7 views
0

Castle Windsor 2.5. Cela échoue. Pourquoi? Est-ce désigné beahvior ou un bug? Apparemment, les résolveurs de sous-dépendance ne sont même pas interrogés lors de la résolution de services de niveau supérieur.Castle Windsor + ISubDependencyResolver: des problèmes étranges

class Program 
{ 
    class Resolver :ISubDependencyResolver 
    { 
    public object Resolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) 
    { 
    return new Program(); 
    } 

    public bool CanResolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) 
    { 
    return dependency.TargetType == typeof (Program); 
    } 
    } 

    [STAThread] 
    static void Main() 
    { 
    var container = new WindsorContainer(); 
    container.Kernel.Resolver.AddSubResolver(new Resolver()); 
    var xxx = container.Resolve<Program>(); 
    } 
} 

Répondre

2

Ce sont sous la dépendance résolveurs. Ils résolvent les dépendances, pas les services racine. Qu'essayez-vous vraiment de faire? Pourquoi ne pas enregistrer l'objet dès le départ?

+0

Problème réellement résolu (utilisé UsingFactoryMethod à la place ISubDependencyResolver) J'ai eu résolveur de session pour injecter NHibernate session dans mes contrôleurs MVC. Mais alors je voulais implémenter un utilitaire pour injecter des dépendances (par exemple des sessions) à mes filtres d'action. Cela nécessite une résolution directe parce que je trouve là des choses comme InjectProperties. –

Questions connexes