#HowTo resolver el error «This resolve operation has already ended. When registering components using lambdas, the IComponentContext ‘c'» con Autofac.

En este post te voy a explicar como resolver el error «This resolve operation has already ended. When registering components using lambdas, the IComponentContext ‘c'» con Autofac.

Antes de empezar.

  • Este ejemplo usa Autofac 6.3.0, y puede no funcionar en versiones anteriores.
  • La inyección de dependencias se hace en el constructor.

Ejemplo:

Necesito inyectar una lista de reglas a un clase en el constructor. Cuando la dependencia se resuelve arroja el error:

 

System.ObjectDisposedException: 'This resolve operation has already ended. When registering components using lambdas, 
the IComponentContext 'c' parameter to the lambda cannot be stored. Instead, either resolve IComponentContext again from 'c', 
or resolve a Func<> based factory to create subsequent components from.'

¿Qué ocasiona el error?

El error es ocasionado porque el component context ya fue desechado cuando la instancia es creada.

¿Como resolver el error?

Este problema se soluciona resolviendo un IComponentContext en lugar de emplear el argumento de la lambda.

Gustavo Sánchez
Últimas entradas de Gustavo Sánchez (ver todo)

Soy especialista en escribir software de calidad. Mediante el uso de marcos de trabajo, técnicas y automatización de procesos he podido reducir los costes operativos de los sistemas de la empresa. Sistemas confiables y adaptables producen clientes felices.