Я использую Ninject как контейнер IoC, но не мог понять, как создать экземпляр класса с более чем одним параметром в конструкторе. В принципе у меня есть интерфейс службы для проверки подлинности в PCL библиотеки и ее реализация в WP8 проекте, который принимает в конструкторе ключ cosumer, секретный и BaseAddress:Конструктор с несколькими аргументами с 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() { ... }
}
Теперь нужно настроить Ninject модуль, так что я могу получить экземпляр IAuthorizationService. Если мой класс не имел конструкторов я бы:
internal class Module : NinjectModule {
public override void Load() {
this.Bind<IAuthorizationService>().To<MyAuthenticator>();
}
}
Если бы фиксированные значения для конструктора, я хотел бы сделать:
internal class Module : NinjectModule {
public override void Load() {
this.Bind<IAuthorizationService>().To<MyAuthenticator>().WithConstructorArgument(*/* fixed argument here*/*);
}
}
И получить экземпляр Module.Get<IAuthorizationService>()
Но что если параметры конструктора не могут быть разрешены во время компиляции? Как пройти паразиты? Как должен быть код привязки?
Отредактировано claryfy вопрос.
Почему downvote? должен был хотя бы прокомментировать, чтобы я мог изменить вопрос ... –
, вероятно, потому, что они чувствовали, что на этот вопрос легко ответить, посмотрев на документы: https://github.com/ninject/ninject/wiki/Dependency-Injection- With-Ninject – BatteryBackupUnit
Нет, это не так! Если вы посмотрите на документы, все параметры конструктора также «вводят». Мой конструктор имеет параметры строк. –