只是好奇,是否支持普通C#对象上的事务?喜欢
using (var transaction = new ObjectTransaction(obj))
{
try
{
obj.Prop1 = value;
obj.Prop2 = value;
obj.Recalculate(); // may fire exception
transaction.Commit(); // now obj is saved
}
except
{
transaction.Rollback(); // now obj properties are restored
}
}
Run Code Online (Sandbox Code Playgroud)
只是为了让答案更有用;-)其他语言有什么相似之处吗?
STM更新:这是它声称的内容:
atomic {
x++;
y--;
throw;
}
Run Code Online (Sandbox Code Playgroud)
将保持x/y不变,包括链式方法调用.看起来像我要求的.至少它非常有趣.我认为这已足够接近了.此外,其他语言也有类似的东西,例如Haskell STM.注意我没说它应该用于生产;-)
c# ×1