Ninject を使い始めたばかりで、質問があります。Sale パラメーターを持つコンストラクターを持つ TaxCalculator クラスがあるとします。次に、ITaxCalculator メンバーを持つ Sale クラスがあります。通常、「this」をパラメーターとして指定して、Sale コンストラクターで TaxCalculator インスタンスを作成します。
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 メソッドを呼び出すことです。