如何定义构造函数参数以使用ninject获取自定义对象?

时间:2012-02-02 14:50:20

标签: c# inversion-of-control ninject

如何使用Ninject将对象传递给构造函数参数?假设对象是在容器中注册的。

1 个答案:

答案 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"]);