我正在寻找可以实现一些序言代码然后是结语代码的设计模式。让我解释:
我有一个功能(很多)几乎做同样的事情:
这是 presudo 代码,但实际上它是用 C# 4.5 编写的
public IDatabaseError GetUserByName(string Name)
{
try
{
//Initialize session to database
}
catch (Exception)
{
// return error with description for this step
}
try
{
// Try to create 'transaction' object
}
catch(Exception)
{
// return error with description about this step
}
try
{
// Execute call to database with session and transaction object
//
// Actually in all function only this section of the code is different
//
}
catch(Exception)
{
// Transaction object rollback
// Return error with description for this step
}
finally
{
// Close session to database
}
return everything-is-ok
}
所以 - 正如你所看到的'prolog'(创建会话、事务、其他辅助函数)和'epilog'(关闭会话、回滚事务、清理内存等)对于所有函数都是相同的。
一些限制:
我想在函数中而不是在 ctor中保留会话和事务对象的创建/销毁过程
自定义代码(在中间运行)必须包含在 try/catch 中,并针对不同的情况返回不同的错误
我愿意接受任何 Func<>、Action<> 更可取的 Task<> 功能建议
关于设计模式或代码重构的任何想法?