2009-12-22 23 views
8

tengo una clase con dos ctors. Uno sin parámetros y uno con parámetros.
Unity tomará por defecto el enfoque greedy e irá al último ctor.Ajuste del constructor sin parámetros como el constructor de la inyección en la creación de contenedores

¿Cómo puedo definir lo ctor a utilizar (quiero sin parámetros) sin añadir la dependencia de la Unidad dentro de mis clases? Creo que es posible hacerlo en la creación de mi contenedor, pero no sé cómo.

Actualmente mi asiento de inscripción es el siguiente:

container.RegisterType<IConfigurationService, SqlConfigurationService>() 

ACTUALIZACIÓN
Estoy tratando de evitar la programación en XML (archivo de configuración) tanto como sea posible.

EXTRA
¿Cómo sería el registro de un constructor con un parámetro (lo que en él es a su vez debe ser inyectada)?
Say ILoggerService ya está registrado y yo querría usar el constructor

public SqlConfigurationService(ILoggerService logger){} 

Respuesta

16

no tengo la Unidad cercana en este momento, pero por lo que recuerdo, se puede hacer algo como esto:

container.RegisterType<IConfigurationService, SqlConfigurationService>(
    new InjectionConstructor()) 
+0

Gracias :) lo haces por casualidad también saber cómo resolver mi pregunta extra (parte inferior de la OP)? –

+0

Conjetura total después de mirar un poco los documentos API: 'container.RegisterType (new InjectionConstructor (new ResolvedParameter ()));' –

0

Creo que también puede pasar en un InjectionConstructor (incluyendo ResolvedParameter<T> s para los parámetros) en su registro. ¿Has probado eso?

0

se puede aplicar el atributo InjectionConstructor al constructor que desea utilizar. Sin embargo, esto tiene la desventaja de mover una configuración de contenedor lejos de una ubicación central.

+0

No deseo agregar ninguna dependencia en mis clases actuales (ref OP) –

Cuestiones relacionadas