フィールドインジェクション
フィールドインジェクションは、私の中ではS2Container.NETにもっとも取り入れたい機能です。DIContainerからDIさせるためだけにプロパティを用意するのは、結構なコストだからです。
フィールドインジェクションですが「カプセル化の殻を壊してまでインジェクション」する必要性と便利だけど使いこなすには「DIコンテナゾーン的思考を要求する事」って指摘を踏まえて考えてみるとS2.UnitはOKとして
- 素直にpropertyインジェクション
- privateフィールドにFieldInjection属性がある場合にインジェクション
- privateフィールドも強制的にインジェクション
と利用ケースに合わせて使い別けられるようにするってのもいいかも
.NET系は全体の利用者のレベルを考慮するとデフォルトは2番の動作の方が
混乱が少ないだろうし、慣れているユーザーでもテストコードでは無く
プロダクトコードにはKijimunaのようなDiconファイルの内容を検証する
ツールを提供できていない現状ではソースに目印として属性が付いている
方が安全だと思う。