register runtime prism autofac

runtime - autofac register



Registro en tiempo de ejecuciĆ³n con Autofac (2)

Actualice un Autofac Container existente : puede actualizar un Autofac Container existente en el tiempo de ejecución utilizando ContainerBuilder.Update() . El siguiente ejemplo de código, tomado de la publicación del blog Autofac 2.2 Liberado , demuestra el uso:

var container = // something already built var updater = new ContainerBuilder(); updater.RegisterType<A>(); updater.Register(c => new B()).As<IB>(); // Add the registrations to the container updater.Update(container);

Autofac y Prism Integration : la pregunta ¿ Cuál es el estado de la integración de Prism en Autofac? También puede ser útil para usted.

Al hablar de Autofac con un colega, surgió el problema del registro de dependencias en tiempo de ejecución. En Prism, por ejemplo, los ensamblajes se cargan con frecuencia en el tiempo de ejecución y sus dependencias se registran con el contenedor IoC (generalmente Unity).

¿Cómo se puede lograr esto con Autofac?

A partir de la documentación de Autofac y lo que he encontrado en la web, parece que el registro se realiza al inicio de la aplicación. Incluso cuando se usan ensamblajes "externos", los registros se ubican en módulos con los ensamblajes al inicio de la aplicación. ¿Cómo hacemos esto después de que el contenedor se "construye" al inicio de la aplicación?

(Tenga en cuenta que el ensamblaje puede querer agregar dependencias para el uso de otros componentes en la aplicación, por lo que un contenedor anidado puede no resolver el problema aquí. Relacionado con este tema: Unity tiene métodos como RegisterIfExists y similares. ¿Existe Autofac? equivalentes?)

¡Gracias!


Actualización para Autofac 4.8.1.0

ContainerBuilder.Update método ContainerBuilder.Update está marcado como Obsolete con un comentario:
En general, los contenedores deben considerarse inmutables. Registre todas sus dependencias antes de construir / resolver. Si necesita cambiar el contenido de un contenedor, técnicamente debería reconstruir el contenedor. Este método puede ser eliminado en un futuro lanzamiento importante.