2007年11月05日

C#3.0:インターフェースに対する拡張メソッド

   このエントリーをはてなブックマークに追加 Clip to Evernote
拡張メソッドは、インターフェースに対しても実装できます。 たとえば、こんな interfaceを考えてみます。
interface IRunnable {
void Run(int times);
}
このインターフェースに対して、すでに、
class Sample : IRunnable {
public void Run(int times) {
for ( int i = 0; i < times; i++ )
Console.WriteLine("Run");
}
}

という実装があり、そこで、Run(10) と等価なIRunnable.Run()という引数なしのインターフェースを追加したくなったとします。
しかし、IRunnableは、何らかの理由で変更することはできません。
そんなときに拡張メソッドの出番です。
static class RunnableExtensions {
public static void Run(this IRunnable obj) {
obj.Run(2);
}
}

と自分のソースに追加してあげれば、
IRunnable obj = new Sample();
obj.Run();
という記述が可能になります。
でも、やりすぎると、設計を壊してしまいそう。






 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51234660