多重継承の出来ない言語系(C#1.0/2.0/Java)において、mix-inは必須の機能である。“mix-in”は文脈によって意味するところがことなるが、ここではC++的な多重継承を意味していると捉えて欲しい。
たとえば、Button,CheckButton,RadioButtonからイメージを表示できる機能を兼ね備えたImageButton,ImageCheckButton,ImageRadioButtonを派生させることを考える。ImageXXXXに共通に要素をくくりだし、それを継承したいのだが、そうすると多重継承になってしまう。これを回避する手段がmix-inである。
これをreflection等を用いて動的にやる手段はかつてからあるのだが、静的に(設計時に)型が定まらないとフォームデザイナから扱うことが出来ない。
そこで、preprocessで処理するmix-in preprocessorが必要になる。今回、そのmix-in preprocessorを作成した。
(これが実はこのmix-inの最大のポイントなのだが)簡単なhackによってインテリセンスが働くようにしてある。
また、ImageXXXXを生成するサンプルもつけてある。C# 3.0が来るまでは、これで凌いでいただきたい。
http://yaneu.com/yaneurao/hatena/MixIn060111.zip