我刚开始使用 Ninject,我有一个问题。假设我有一个 TaxCalculator 类,该类具有带有 Sale 参数的构造函数。然后我有 ITaxCalculator 成员的销售类。Normaly 我会在 Sale 构造器中创建 TaxCalculator 实例,将“this”作为参数。
public class Sale
{
private ITaxCalculator taxCalculator;
public Sale()
{
this.taxCalculator = new TaxCalculator(this);
}
}
public class TaxCalculator : ITaxCalculator
{
private Sale sale;
public TaxCalculator(Sale sale)
{
this.sale = sale;
}
}
是否可以使用 Ninject 完成此操作?下面的代码显然不起作用。
public class Sale
{
private ITaxCalculator taxCalculator;
[Inject]
public void SetTaxCalculator(ITaxCalculator taxCalculator)
{
this.taxCalculator = taxCalculator;
}
}
....
using (IKernel kernel = new StandardKernel())
{
Sale sale = null;
kernel.Bind<ITaxCalculator>()
.To<TaxCalculator>()
.WithConstructorArgument("sale", sale);
sale = kernel.Get<Sale>();
}
我希望 Ninject 做的是在调用 Sale 构造函数之后调用 SetTaxCalculator 方法。