Sto utilizzando lo Ninject come contenitore IoC ma non è in grado di capire come creare un'istanza di una classe che ha più di 1 parametro nel costruttore. Fondamentalmente ho un'interfaccia di servizio per l'autenticazione in una biblioteca PCL e la sua attuazione in un progetto WP8 che riceve nel costruttore della chiave cosumer, segreta e BaseAddress:Costruttore con più argomenti con Ninject
//On PCL project
public interface IAuthorizationService {
bool Authenticate();
}
//On WP8 Project
pubilc class MyAuthenticator : IAuthorizationService {
public MyAuthenticator(string consumerKey, string consumerSecret, string baseAddress) { ... }
public bool Authenticate() { ... }
}
Ora ho bisogno di configurare il modulo Ninject modo da poter ottenere un'istanza di IAuthorizationService. Se la mia classe non aveva costruttori che vorrei fare:
internal class Module : NinjectModule {
public override void Load() {
this.Bind<IAuthorizationService>().To<MyAuthenticator>();
}
}
Se fosse valori fissi per il costruttore che vorrei fare:
internal class Module : NinjectModule {
public override void Load() {
this.Bind<IAuthorizationService>().To<MyAuthenticator>().WithConstructorArgument(*/* fixed argument here*/*);
}
}
E per ottenere un'istanza Module.Get<IAuthorizationService>()
Ma cosa se i parametri del costruttore non possono essere risolti al momento della compilazione? Come passare i paramenters? Come dovrebbe essere il codice bind?
Modificato per eliminare la domanda.
Perché il downvote? dovrebbe avere almeno commentato in modo da poter cambiare la domanda ... –
è probabilmente perché hanno ritenuto che questa domanda è facilmente risposta guardando i documenti: https://github.com/ninject/ninject/wiki/Dependency-Injection- With-Ninject – BatteryBackupUnit
No, non lo è! Se guardi i documenti tutti i parametri del costruttore sono anch'essi "iniettabili". Il mio costruttore ha i parametri delle stringhe. –