フィールドインジェクション

フィールドインジェクションは、私の中ではS2Container.NETにもっとも取り入れたい機能です。DIContainerからDIさせるためだけにプロパティを用意するのは、結構なコストだからです。

フィールドインジェクションですが「カプセル化の殻を壊してまでインジェクション」する必要性と便利だけど使いこなすには「DIコンテナゾーン的思考を要求する事」って指摘を踏まえて考えてみるとS2.UnitはOKとして

  1. 素直にpropertyインジェクション
  2. privateフィールドにFieldInjection属性がある場合にインジェクション
  3. privateフィールドも強制的にインジェクション

と利用ケースに合わせて使い別けられるようにするってのもいいかも
.NET系は全体の利用者のレベルを考慮するとデフォルトは2番の動作の方が
混乱が少ないだろうし、慣れているユーザーでもテストコードでは無く
プロダクトコードにはKijimunaのようなDiconファイルの内容を検証する
ツールを提供できていない現状ではソースに目印として属性が付いている
方が安全だと思う。