У меня есть три метода:
public void Save<T>(T entity)
{
using (new Transaction())
{
Session.Save(entity);
}
}
public void Create<T>(T entity)
{
using (new Transaction())
{
Session.Create(entity);
}
}
public void Delete<T>(T entity)
{
using (new Transaction())
{
Session.Delete(entity);
}
}
Как видите, единственное, что отличается, - это вызов метода внутри блока using
. Как я могу переписать это так, что-то вроде этого:
public void Save<T>(T entity)
{
TransactionWrapper(Session.Save(entity));
}
public void Create<T>(T entity)
{
TransactionWrapper(Session.Create(entity));
}
public void Save<T>(T entity)
{
TransactionWrapper(Session.Save(entity));
}
Другими словами, я передаю вызов метода в качестве параметра, а метод TransactionWrapper
оборачивает транзакцию вокруг вызова метода.