Spring.Net: внедрить сам ApplicationContext/ObjectFactory

Есть ли способ передать IObjectFactory или ApplicationContext, который в настоящее время выполняется как зависимость от объекта? Например

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

Я хочу использовать его для своей реализации Spring.Net Asp.Net MVC ControllerActionInvoker, которая будет внедрена в контроллеры.

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
    }
}

person Fabiano    schedule 08.10.2010    source источник


Ответы (2)


просто сделайте так, чтобы ваш класс реализовал IApplicationContextAware, который должен автоматически ввести текущий IApplicationContext.

person Sebastian Piu    schedule 19.10.2010

Как насчет:

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

А потом:

public class SpringActionInvoker : ControllerActionInvoker
{
    protected override FilterInfo GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
    {
        IObjectFactory objectFactory = ContextRegistry.GetContext();
        //use objectFactory to inject dependencies into filters
    }
}
person Darin Dimitrov    schedule 08.10.2010
comment
Я хочу поместить SpringActionInvoker в служебный класс, и я не всегда создаю ObjectContext с помощью app.config и ContextRegistry. - person Fabiano; 08.10.2010