機能追加
先日のNyaRuRuさんのエントリ(d:id:NyaRuRu:20080328:p1)の考え方は自分の中に無かった。面白かったです。便利そうだけどパッと応用例が浮かばない・・・。C++屋さんなら得意かもしれませんね。
MC++Dの「1.8 機能追加と不完全な実体化」にちょっと似てる気がするので。
こうすると暗黙のインターフェイス以外無いのでちょっとだけ動的チック・・・?
class Program { static void Main(string[] args) { var product = TypeSelector<string>.Factory.Create(); product.Hello(); } } public class TypeSelector<T> { private TypeSelector() { } public static readonly TypeSelector<T> Factory = new TypeSelector<T>(); } public static class Extention { public static Bar1 Create( this TypeSelector<int> f ) { return new Bar1(); } public static Bar2 Create<T>( this TypeSelector<T> f ) { return new Bar2(); } public class Bar1 { public int GetValue() { return 1; } } public class Bar2 { public int GetValue() { return 2; } public void Hello() { Console.WriteLine( "hello" ); } } }