Estoy escribiendo una utilidad de bandeja del sistema y en el menú hay varios formularios diferentes que puede abrir para la aplicación. Estoy usando autofac para resolver la creación de estos formularios cuando sea necesario dando mi forma principal de dependencias de Func y Func.¿Cómo uso autofac para resolver una instancia única de un formulario (no modal) hasta que se elimine ese formulario?
Si el usuario selecciona una opción que activa el formulario, si ya se muestra, debería recibir el foco, de lo contrario, autofac debería crear un formulario nuevo.
Realmente no quiero que estos formularios estén guardados en la memoria mientras no estén en uso, por lo que actualmente estoy dejando que el formulario se elimine solo cuando el usuario lo cierra.
Lo que necesito saber es cómo puedo notificar a autofac que el formulario se ha dispuesto de manera que:
- Ya no contiene una referencia a la forma dispuesta (y puede así ser basura recogida)
- Cuando vuelva a solicitar autofac para una instancia del formulario, crea uno nuevo.
He estado leyendo el wiki de Autofac y supongo que solo tengo que configurar el LifetimeScope correctamente.
Gracias Jim, me ampliado en su solución mediante el registro del proveedor de formularios como [abierta genérica] (http : //code.google.com/p/autofac/wiki/OpenGenerics) y utilizando una interfaz para mis dependencias de formulario. Para crear los servicios para acceder a estas interfaces de formulario, les pedí que utilizaran un proveedor de formulario resuelto por autofac. De esta forma, mis formularios pueden agregar dependencias sin que tenga que modificar mi código de registro de Autofac. –
@RhysParry ¿Podría pedirle que amplíe la solución extendida, preferiblemente publicando el código fuente para que yo y otros se inspiren? :) – bernhof