C#3.0機能紹介その2。拡張メソッド
RubyのMix-in的な感じなのかな、定義方法はだいぶ違うけど。
既存のインスタンスにメソッドを追加できます。
以下のようにクラスとメソッドを定義
static class StaticMethods { static public void ShowMessageBox(this string s) { MessageBox.Show(s,"title",MessageBoxButtons.OK,MessageBoxIcon.Information); } }
仮引数の前に書いてあるthisがポイント、これで拡張メソッドが使用できるようになりました。
thisキーワードがついた型のインスタンスメソッドとして扱えます。
プロジェクトから見える状態にして、usingしてあげたら準備完了。
使用するときはこんな感じに。
StaticMethods.ShowMessageBox("test1"); "test2".ShowMessageBox();
ちょっと気になるのは、スコープにはいってたら自動的に使えるようになるところ。
拡張メソッド用のモジュールクラスみたいなのをきちんとネームスペースをつくって運用したいかなぁ