2009-12-22 18 views
8

Ho una classe con due operatori. Uno senza parametri e uno con parametri.
Unity prenderà di default l'approccio Gew e si rivolgerà all'ultimo ctor.Impostazione del costruttore senza parametri come costruttore dell'iniezione nella creazione del contenitore

Come posso definire quale ctor usare (voglio senza parametri) senza aggiungere dipendenza da Unity all'interno delle mie classi? Penso che sia possibile farlo nella mia creazione di container, ma non so come.

Attualmente la mia voce di registrazione è simile al seguente:

container.RegisterType<IConfigurationService, SqlConfigurationService>() 

UPDATE
Sto cercando di evitare la programmazione in XML (file di configurazione), per quanto possibile.

EXTRA
Come sarebbe la registrazione di un costruttore con un parametro (che in essa di volta dovrebbe essere iniettato)?
Say ILoggerService è già registrato e vorrei utilizzare il costruttore

public SqlConfigurationService(ILoggerService logger){} 

risposta

16

Non ho Unità vicina in questo momento, ma per quanto mi ricordo, si può fare qualcosa di simile:

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

Grazie :) Sai per caso anche come risolvere la mia domanda extra (parte inferiore di OP)? –

+0

Totale ipotesi dopo aver osservato un po 'i documenti API: 'container.RegisterType (nuovo InjectionConstructor (nuovo ResolvedParameter ()));' –

0

Penso che si può anche passare in un InjectionConstructor (compresi ResolvedParameter<T> s per i parametri) nella tua registrazione. Hai provato?

0

È possibile applicare l'attributo InjectionConstructor al costruttore che si desidera utilizzare. Questo ha lo svantaggio di spostare alcune configurazioni del contenitore da una posizione centrale comunque.

+0

Non voglio aggiungere alcuna dipendenza nelle mie effettive classi (rif OP) –

Problemi correlati