Tring używać Ninject jako kontener IoC, ale nie może zrozumieć, jak utworzyć wystąpienie klasy, która ma więcej niż 1 parametr w konstruktorze. Zasadniczo mam interfejs usługi uwierzytelniania w bibliotece PCL i jego wdrożenie w projekcie WP8, który odbiera w konstruktorze klawisz cosumer, tajne i baseAddress:Konstruktor z wieloma argumentami z 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() { ... }
}
Teraz trzeba skonfigurować moduł Ninject więc mogę dostać instancja IAuthorizationService. Jeśli moja klasa miała żadnych konstruktorów zrobiłbym:
internal class Module : NinjectModule {
public override void Load() {
this.Bind<IAuthorizationService>().To<MyAuthenticator>();
}
}
Gdyby stałe wartości dla konstruktora zrobiłbym:
internal class Module : NinjectModule {
public override void Load() {
this.Bind<IAuthorizationService>().To<MyAuthenticator>().WithConstructorArgument(*/* fixed argument here*/*);
}
}
i uzyskać instancji Module.Get<IAuthorizationService>()
Ale co czy parametrów konstruktora nie można rozwiązać w czasie kompilacji? Jak przekazać paramenty? Jak powinien wyglądać kod wiążący?
Edytowane w celu wyjaśnienia pytania.
Dlaczego spadamy? powinienem przynajmniej skomentować, aby móc zmienić pytanie ... –
Prawdopodobnie dlatego, że czuli, że na to pytanie można łatwo odpowiedzieć, patrząc na dokumenty: https://github.com/ninject/ninject/wiki/Dependency-Injection- With-Ninject – BatteryBackupUnit
Nie, nie jest! Jeśli spojrzysz na dokumenty, wszystkie parametry konstruktora są również "wstrzykiwane". Mój konstruktor ma parametry łańcuchów. –