makotan _at_ gmail dot com

C++とDI

ほんとに思いついただけ・・・
DIObject型(メソッド無し)を作ってそれを継承すること。
設定ファイルは.cpp(w
基本はマクロで構築

DICON_START
 COMPONENT_START(className,componentName,instanceMode)
  PROPERTY(setterName,ArgClassName)
  PROPERTY_VAL(setterName,val)
  AOP_START(className)
   AOP_METHOD(methodName)
   AOP_METHOD(methodName)
   AOP_METHOD(methodName)
   AOP_START(className)
     AOP_METHOD(methodName)
     AOP_METHOD(methodName)
   AOP_END
  AOP_END
 COMPONENT_END
DICON_END

こんな感じ

内部的には
diconなFactoryとcomponentのproxyが作られて
factoryのnewの時にComponentをnewしていく
後からpuropertyを探して設定していって
AOPはテンプレートメソッドorテンプレートクラスで処理
xmlに書いて、コンパイル前にC++のコードに変換ってのもちょっと考えた(笑)
(追記)
そういえばC++ってinner classあったっけ・・・すっかり仕様を忘れてる・・・orz
あ〜あのころが懐かしいなぁ〜〜

COMPONENT_START(className,componentName,instanceMode)
 //略
COMPONENT_END
DICON_START
  ADD_COMPONENT(className,componentName)
DICON_END

innser classが無い場合はこの書き方かなぁ〜