Pregunta

(NOTA: He actualizado esta pregunta desde la consulta inicial sobre contenedores secundarios para crear componentes a pedido)

Aquí está mi problema de diseño: estoy usando el contenedor Windsor para el flujo de trabajo de la aplicación principal, pero tengo ciertas acciones que necesito crear a pedido (por ejemplo, cuando el usuario hace clic en un elemento del menú). Quiero que estas acciones se conecten automáticamente con información de contexto (por ejemplo, la acción DeletePointsAction debería obtener una lista de puntos que se eliminarán en el constructor).

Inicialmente estaba pensando en tener algún tipo de mini-IoC que se actualizara constantemente con dicha información de contexto y luego se usara para el cableado y me preguntaba si los contenedores secundarios podrían hacer el trabajo.

Pero después de leer un poco más sobre contenedores secundarios y pensar en mi problema, ahora he encontrado una solución que parece mejor (al menos a primera vista): mantener un Dictionary con esta información de contexto y usando este diccionario al crear acciones desde el contenedor de Windsor. El único inconveniente que veo en este momento es que los nombres de las claves en el diccionario siempre deben corresponder a los nombres de los parámetros del constructor para las acciones.

La alternativa es escribir mi propio solucionador de dependencia personalizado que sería lo suficientemente inteligente como para determinar dependencias basadas en el tipo de valor del diccionario y no necesariamente su nombre clave. Sin embargo, no estoy seguro de cuánto trabajo significaría esto.

¿Alguna idea / experiencia sobre este tema?

¿Fue útil?

Solución

ISubDependencyResolver no parece ser mucho trabajo. Creo que todo depende demasiado de los detalles de su diseño y situación para dar una respuesta genérica. Mi consejo es que pruebe el solucionador con algunos de los escenarios más complicados que sabe que enfrentará y vea cómo funciona para usted.

La buena noticia es que si oculta los detalles detrás del contenedor, más adelante podrá cambiar a otra solución, si encuentra que esta no se adapta bien a sus necesidades.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top