如何使用Ninject将对象传递给构造函数参数?假设对象是在容器中注册的。
答案 0 :(得分:3)
如果在容器中定义了依赖对象,显然您不需要为Ninject显式提供构造函数参数。这与Castle不同。
这是一个例子。 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"]);