やねうらお blog

.NETでゲームを作ったり、IL上に独自言語を実装しちゃうぞ

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  23  : 記事  0  : コメント  33  : トラックバック  9

書庫

多重継承の出来ない言語系(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

投稿日時 : 2006年1月12日 4:22

コメント

No comments posted yet.

Post Feedback

タイトル
名前
Url:
コメント: