Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

拡張メソッド

拡張メソッドのメリット

拡張メソッドは工夫次第で面白い使い方ができます。 既存のクラスを修正せずにメソッドを追加できる。 BCLのクラスであってもメソッドを追加することが可能です。 インターフェースでもメソッドを追加できる。 拡張メソッドを使えばインターフェースにもメソ…

Enum値のテキスト変換を拡張メソッドで実装する

Enum値をテキストで表示したいことがたまにあります。 例えば、こんなEnumがあるとします。 enum Hoge : int { Foo = 1, Bar = 2 } ありがちな方法 こう書くと、 Console.WriteLine(Hoge.Foo.ToString()); Console.WriteLine(Hoge.Bar.ToString()); このよう…

拡張メソッドでNullセーフなメソッドを実装する

オブジェクトのNullチェックって面倒ですよね。.Net 3.0以降なら拡張メソッドでNullセーフなメソッドを実装できます。例えば、IDisposableにNullチェックを入れたDisposeを実装するならこんな感じです。 using System; namespace SystemExtensions { /// <summary> //</summary>…

拡張メソッドの投稿サイト

拡張メソッドの投稿サイトが公開されています。 Recently added - Extension MethodHome of 565 c#, vb.net, f# and javascript extension methodsDataGridView.Printとかすごいです。 Print - Extension Method

拡張メソッドでNullセーフなメソッドを実装する

オブジェクトのNullチェックって面倒ですよね。.NET3.0以降なら拡張メソッドでNullセーフなメソッドを実装できます。ここではIDisposableにNullチェックを入れたDisposeを実装してみます。 /// <summary> /// IDisposableインターフェースの拡張メソッドを実装します</summary>…

【Windowsフォーム】ボタン二度押し対応のサンプル

Windowsフォームアプリのボタン連打対応のサンプルです。ボタンクリック処理中のボタン再押下を無効化します。詳細はソースのコメントを見てください。以下のスレの2007年11月9日 8:55のれいさんの回答を参考に、Formクラスの拡張メソッドとして実装してみま…