問題
Ninject のような依存性インジェクターをコード内のいつ、どこで使用する必要があるかを理解するのにいくつか問題があります。
コード
たとえば、次のコードがあるとします。
//WITHOUT NINJECT:
IMailSender mailSender = new MockMailSender();
//WITH NINJECT:
IMailSender mailSender = kernel.Get<IMailSender>();
これは依存性注入ではないので、このシナリオで Ninject を使用するのは理にかなっていますか?
別の例は、依存性インジェクターを使用することで私のコードが実際にめちゃくちゃになる方法を示しています。
public void CalculateRevenueRecognitions(IContract contract)
{
//WITH NINJECT
var kernel = new StandardKernel(new DefaultModule());
var arguments = new List<IParameter>
{
new ConstructorArgument("amount",contract.Revenue),
new ConstructorArgument("date", contract.WhenSigned)
};
contract.AddRevenueRecognition(kernel.Get<IRevenueRecognition>(arguments.ToArray()));
//WITHOUT NINJECT:
contract.AddRevenueRecognition(new RevenueRecognition(contract.Revenue, contract.WhenSigned))));
}
質問
依存性インジェクターはいつ使用する必要がありますか?
- コンストラクター注入、パラメーター注入などについて。
- オブジェクトの作成について (依存性インジェクターは、従来のオブジェクトの作成を新しいものに置き換えますか?)
- 他は?
依存関係インジェクターを使用すべきでないのはいつですか?