-インジェクションの仕様

MLに、横田さんの投稿を見て、便乗投稿しました。S2コンテナに、もっと根性つける仕様の案です。が、微妙なのはコンテナ外のコードでもできること。ただ、コンテナにあると便利。
1:Beanタイプ

  • set***(Interface型)というプロパティのとき、
  • プロパティ型をキーにしてS2コンポーネントを取り出す
  • 取得できたとき、プロパティに設定(ここまでは今の仕様!)
  • TooManyのとき、TooMany例外オブジェクトが持ってる重複コンポーネント定義のうち、プロパティ名のものを抽出。一個なら、プロパティに設定
  • 型も名前もかぶっていたら、TooMany例外

2:Beanタイプの配列型

  • set***(Interface型[])という配列型プロパティのとき、
  • 要素型でS2コンポーネントを取り出す
  • 取得できたら、1個のときは長さ1の配列にして突っ込む
  • TooManyのとき、重複コンポーネントを全部取得して配列にして突っ込む。

3:Listタイプ

  • add***(Interface型) というpublicメソッドがあったとき、
  • メソッド引数型でS2コンポーネントを取り出す。
  • 取得できたとき、メソッド引数にしてfire
  • TooManyのとき、重複コンポーネントを全部繰り返し突っ込む

4:Mapタイプ

  • put***(String, Interface型)というpublicメソッドがあったとき、
  • メソッド引数型でS2コンポーネントを取り出す。
  • 取得できたとき、名前も取得。あれば、二つをメソッド引数にしてfire
  • TooManyのとき、重複コンポーネントを全部繰り返し名前取得して突っ込む

実はList型とかはS2JSFのDiconファイルとか見ると、initMethodでやってるところとかあるので、有効かと思うんだよね。