型情報を使ってプログラミングすると拡張性や保守性が良くなる場合がある

次のコードは、DataGridViewの列の型情報を判別して、チェックボックスである場合に読み取り専用をはずす例である。
このようにしておくと、DataGridViewの列の順番を入れ替えたり、チェックボックスの列が追加されても、必ずチェックボックスの列は読み取り専用ではなくなる。


ポイントは、、typeof(type)、GetType()メソッドである。
前者は、文字列から型を取得する。typeはクラス、インターフェイスの名前である。
後者は、インスタンスの型情報を取得する。そして、型を比較する際は、TypeクラスのメソッドEqualsを使う。

開発時はどの列がチェックボックスか分かっているんだから、次のように読み取り専用をはずすコードを書けばいいじゃないかと反論が聞こえてきそうである。しかし、このように書くと上で述べたように列の順番が入れ替わったり、列が追加になると、このコードも直す必要があり、修正漏れが発生しやすくなる。

トラックバック

トラックバックURL:
http://www.apricot-jp.com/cgi/mt/mt-tb.cgi/258

関連情報

・Microsoft JScript 実行時エラー:オブジェクトを指定してください。
・このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。ASPNET はログインできません
・Logging Application Blockのトラブルシューティング
・IISのログ出力先
・このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。ASPNET はログインできません
・C# 3.5 yieldの読み方
・ASP.NET サーバーサイドのイベント処理の順番
・ASP.NETのWebページでグーグルアドセンスを貼り付ける方法
・IIS メタベースにアクセスできませんでした
・VSSで管理されているプロジェクトは、ファイルの名前の変更や移動は極力行わない方が良い
・Oracle 9.2へOLE DB接続する方法
・単体テストのデータ
・この行は既に別のテーブルに属しています
・データベースのバージョンは 655 なので、開けません。
・証明書ストアでマニフェスト署名用の証明書が見つかりません。
・次のモジュールは最適化を有効にされて、またはデバッグ情報なしでビルドされました
・String.Concatメソッドを使った文字列の連結
・ファイルの存在をチェックする
・テキストファイルをロードし文字列を読み込むサンプル
・任意の数の引数を受け取るメソッド

Copyright(C) 2007 アーキテクト360 Allrights reserved.