BindingSourceのCurrentプロパティを型安全に取得するための拡張メソッド

WinFormsアプリではBindingSourceコントロールを使うことで手軽に双方向データバインドを活用したアプリケーションが作成できます。

 

しかし、BindingSourceコントロールにて現在データを取得するCurrentプロパティはobject型であるため、いちいちキャストしてやる必要があります。

また、DataTableをバインドした場合、Currentプロパティで取得されるのはDataRowView型であり、DataRow型でないのも、いちいち面倒くさいです。

 

そんな悩みを解消するため、型安全にCurrent取得を行うための拡張メソッドを作ってみました。

using System;
using System.Data;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
  public static class BindingSourceExtensions
  {
    public static T GetCurrent<T>(this BindingSource bs) where T : class
    {
      var current = bs.Current;
      var drv = current as DataRowView;
      if (drv != null)
      {
        return drv.Row as T;
      }

      return current as T;
    }
  }
}

 

使用方法はジェネリック型引数を指定して呼び出すだけです。

var current = bindingSource.GetCurrent<MyClass>();

 

ソースはgistにアップしてあります。

BindingSourceのデータソースにDataTableを設定した際、カレント行のDataRowを取得するためのヘルパ拡張メソッド — Gist

 

せっかく静的型付言語を使うのだから、なるべき型安全に行きたいですよね!そんなときは拡張メソッドを生やして楽しましょう。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中