带有Ninject的多个参数的构造方法

我想使用Ninject作为IoC容器,但无法理解如何在构造函数中创建一个具有多个参数的类的实例。 基本上我有一个用于PCL库中的身份validation的服务接口,以及它在WP8项目中的实现,该项目在构造函数中接收cosumer密钥,secret和baseAddress:

//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的实例。 如果我的class级没有构造函数,我会这样做:

 internal class Module : NinjectModule { public override void Load() { this.Bind().To(); } } 

如果它有构造函数的固定值,我会这样做:

 internal class Module : NinjectModule { public override void Load() { this.Bind().To().WithConstructorArgument( */* fixed argument here*/* ); } } 

并获得一个实例Module.Get()

但是如果构造函数参数在编译时无法解析呢? 如何通过参数? 绑定代码应该如何?

编辑了这个问题。

这很容易。 无论有多少构造函数参数,绑定都保持不变:

 Bind().To(); 

假设MyAuthenticator有一个构造函数,其中一个参数类型为IFoo 。 你所要做的就是告诉ninject它如何解析/创建一个IFoo 。 再次,非常简单:

 Bind().To(); 

您不需要WithConstructorArgument除非您想要覆盖ninject的默认行为。 假设MyAuthenticator有一个IFoo类型的参数加上你想要专门配置的另一个参数string seed 。 你所需要的只是:

 Bind().To(); Bind().To() .WithConstructorArgument("seed", "initialSeedValue"); 

无需指定IFoo参数的值!