2010-10-08 5 views
0

Existe-t-il un moyen de transmettre l'IObjectFactory ou le ApplicationContext en cours d'exécution en tant que dépendance à un objet? Par exempleSpring.Net: Inject ApplicationContext/ObjectFactory proprement dit

<object id="SpringActionInvoker" type="xxx.SpringActionInvoker, xxx"> 
    <constructor-arg ref="reference_to_the_ApplicationContext_or_ObjectFactor_that_is_executing" /> 
    </object> 

Je veux l'utiliser pour ma mise en œuvre Spring.Net du MVC Asp.Net ControllerActionInvoker qui sera injecté aux contrôleurs

public class SpringActionInvoker : ControllerActionInvoker 
{ 
    private IObjectFactory objectFactory; 

    public SpringActionInvoker(IObjectFactory objectFactory) 
    { 
     this.objectFactory = objectFactory; 
    } 

    protected override FilterInfo GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor) 
    { 
     //use objectFactory to inject dependencies into filters 
    } 
} 

Répondre

4

suffit de mettre en œuvre votre classe IApplicationContextAware qui devrait vous obtenir l'IApplicationContext actuel injecté automatiquement.

0

Que diriez-vous:

<object id="SpringActionInvoker" type="xxx.SpringActionInvoker, xxx" /> 

Et puis:

public class SpringActionInvoker : ControllerActionInvoker 
{ 
    protected override FilterInfo GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor) 
    { 
     IObjectFactory objectFactory = ContextRegistry.GetContext(); 
     //use objectFactory to inject dependencies into filters 
    } 
} 
+0

Je veux mettre SpringActionInvoker dans une classe utilitaire et je ne crée pas toujours le ObjectContext avec le app.config et ContextRegistry – Fabiano