Aspectが全てシングルトンだと過程して、「AAspect」→「BAspect」→「メソッド実行」のチェーンを組んで、実メソッド実行後に「実行メソッド」→「BAspect」→「AAspect」で戻れる実装が再起を除いて思い浮かばない。
再起でスタックを組んでしまうと、「BAspect」←→「AAspect」の関係が強固なものになってしまう。
この状態で別スレッドからアスペクトを実行されたとき、思わぬ組み合わせとなったり、スタックが競合したりと、色々問題が起きてしまう。
スレッドセーフも考えたが、そもそも static で無い以上は速度劣化が起きてしまう。
BeforeMethodInvoke と AfterMethodInvoke のように、メソッドの実行前、実行後のメソッドを分離してしまえば、イベントチェーンでどうとでもなるのだが、、、、。
ということで、構造を見直しただけで今日が終わってしまった、、、。
http://www.white-azalea.net/index.php/p/azaleaworks/downloads/
こうしてソースを晒すとレビューになりそうね、、、、、
すまない、StyleCop も FxCOP も通してないんだ、、、、|||orz
蛇足。お昼休みに FizzBazz して遊んでみた。
C 言語久々に触るなぁ、、、、96文字、printf 邪魔だし、何か小手先の技ばっかで、アルゴリズムを見ていない。
そんなに悩む気はないので、この辺で放置するけど、、、、もちっと面白い解がないものか、、、。
main(i){ for(i=0;i++<50;) ((i%5?1:!printf("Bazz, "))&& (i%3?1:!printf("Fizz, ")))?printf("%d, ", i):0; }