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処理
});
}
}