2009-09-04 8 views

Respuesta

23

Todos los constructores disponibles se modelan como candidatos y básicamente se ejecuta un concurso entre ellos.

Cada parámetro en un constructor representa una dependencia que puede ser satisfecha o no. Para cada candidato de constructor, se analizan todas las dependencias.

Si se puede cumplir una dependencia, eso es dos puntos para el candidato. Si no se puede satisfacer, se restan dos puntos del candidato.

El candidato de constructor con la mayor cantidad de puntos gana y se elige para crear una instancia del componente.

El código para este algoritmo es here.

+0

Gracias por la información ... –

+0

Gracias por la información Mauricio. Estoy teniendo "problemas" con Windsor en un proyecto relacionado con S # arpArch y eso ayuda mucho. – WillCodeForCoffee

+0

¡Muy bien dicho! Encontré este enlace más en algo similar que habla sobre el problema inherente de tener constructores sobrecargados en primer lugar en sus componentes cuando está utilizando contenedores DI para instanciar su clase: http://stackoverflow.com/questions/7926686/castle- windsor-force-resolver-to-use-specified-constructor – RBT

1

Castle Windsor utilizará el constructor con la mayoría de los parámetros cuyas dependencias puede resolver.

Cuando hay dos constructores con el mismo número de parámetros que Windsor puede resolver, el comportamiento solía ser aparentemente arbitrario, pero puede haber sido corregido.

ver este post de Krzysztof Kozmic

Cuestiones relacionadas