Devneko.net

C#でローンパターン

C# Tips Index

C#にはクロージャがあるのでレキシカルクロージャを持つ言語ではお馴染みのローンパターンが 使える。
ローンパターンはリソースのアクセスに必要な前後処理をまとめるのに便利。
ただCSharpの場合はIDisposableとusingがあるのでそこまで多用することはないかも。

// DB接続の取得などにローンパターンを適用する例
public class DatabaseManager
{
  public static void WithConnection(Action action)
  {
    using (var conn = GetConnection() )
    {
      conn.Open();
      action(conn);
    }
  }
  public static DbConnection GetConnection()
  {
     // DB接続を取得する処理
  }
}

public class DatabaseProcess
{
  public void process()
  {
    DatabaseManager.WithConnection( conn =>
      {
        // DB処理
      });
  }
}