私は過去にデリゲートを使用したことがあるので、デリゲートの使用と利点に精通しています。私もたくさんの読書/研究をしました、しかし私はこれに頭を包み込もうとしていて、どこにも行きません。デリゲート(私は信じています)を使用してコードをカプセル化するか、メソッド内でデリゲートを使用して外部コードを呼び出したいと思います。
トランザクションでエンティティフレームワークの更新をラップするために、20の異なる場所で同じコードを使用しています。コードを1か所にまとめたい。ただし、途中で毎回変わる部分があるので、メソッドだけではできません。私はこれを最もよく行う方法についていくつかのアイデア/説明を探しています(.net 3.5、ms sql2010)。--thnx
コードサンプル:
void AddItem(string objDetails)
{
// setup method specific entity objects
SomeObject obj = new SomeObject { Details = objDetails };
//////// Begin transaction code that I would like to encapsulate ///////
bool success = false;
using (Entities data = new Entities())
{
for (int i = 0; i < s.BaseSettings.CommandRetries; i++)
{
using (TransactionScope transaction = new TransactionScope())
{
try
{
//////////////////////////////////////////////////////////////
///////// BEGIN Code that I would like to change / call different each time ////////
data.AddToSOMEOBJECTs(obj);
//////////////// END //////////////////////////////////
//// RETURN TO ENCAPSULATED CODE ////
data.SaveChanges(false);
transaction.Complete();
success = true;
break;
}
catch (Exception ex)
{
if (ex.GetType() != typeof(UpdateException))
{
throw new Exception("Unhandled db exception.");
}
}
}
}
if (success)
{
data.AcceptAllChanges();
}
else
{
throw new Exception();
}
}
}