C# 3.0
一番便利なのはやっぱりExtension Method。
とりあえずいろんなとこで使う便利なメソッドなんだけど、どのクラスが持つべきかわからないいうことがある。public staticにすると視認性がすこぶる悪いし、うまいこといかない。
そんなときはとりあえずExtension Methodにする。
interface IHoge{} static class HogeExtension { //とりあえずインターフェースの拡張メソッドにする public static Foo Method(this IHoge hoge, Arg arg){ ... } } //このクラスでメソッドを使いたいので、interfaceを実装 class Huga : IHoge { public void HugaHuga() { //拡張メソッドをthisを付けて呼び出す(thisをつけないと呼び出せない) Foo foo = this.Method(arg); } }
interfaceのExtension Methodにすれば、必要なやつにinterfaceを実装させると呼び出せるようになる。