Как определить аргумент конструктора, чтобы получить пользовательский объект с помощью ninject? - PullRequest
2 голосов
/ 02 февраля 2012

Как передать объект в аргумент конструктора с помощью Ninject?Предполагая, что объект зарегистрирован в контейнере.

1 Ответ

3 голосов
/ 02 февраля 2012

Очевидно, вам не нужно явно предоставлять Ninject аргументы конструктора, если зависимые объекты определены в контейнере.Это не похоже на замок.

Вот пример.IGitRepository зависит от IGitAuthor и IGitRepositoryPath.Поскольку эти два иждивенца связаны в моем контейнере, они вводятся «магическим образом»Ninject достаточно умен, чтобы видеть, что конструктор IGitRepository принимает их.Поэтому я просто связываю IGitRepository и опускаю .withConstructorArgument (s).

 Bind<IGitRepository>().To<GitRepository>();
        Bind<IGitAuthor>().To<GitAuthor>()
            .WithConstructorArgument("author", ConfigurationManager.AppSettings["GitAuthor"])
            .WithConstructorArgument("email", ConfigurationManager.AppSettings["GitEmail"]);
        Bind<IGitRepositoryPath>().To<GitRepositoryPath>()
            .WithConstructorArgument("path",ConfigurationManager.AppSettings["GitServerUri"]);
...