如何为TransactionScope编写包装器

Cha*_*bub 2 c# design-patterns

嗨,我在我的应用程序中的几个地方使用TransactionScope.喜欢:

using (var scope = new TransactionScope())
{
        ToDo1();
        ToDo2();
        scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)

我希望有可能在一个地方禁用我的所有TransactionScopes.

我想像MyTransactionScope类,我可以定义是否要使用它.

你能给我一个如何实现它的提示吗?

谢谢.

Ank*_*ush 5

我做到了这一点.你不能继承,TransactionScope因为它是密封的.而是在类中包含MyTransactionScope类.还要实现,IDisposable这样你就可以使用construct来调用它.并揭露.Complete()和其他相关的方法.这些方法将在内部调用内部包含的对象.

public sealed class MyTransactionScope : IDisposable
{
    TransactionScope _transactionScope = null;

    #region Overloaded Constructors
    public MyTransactionScope()
    {
        _transactionScope = new TransactionScope();
    }

    public MyTransactionScope(Transaction transactionToUse)
    {
        _transactionScope = new TransactionScope(transactionToUse);
    }
    #endregion

    public void Complete()
    {
        _transactionScope.Complete();
    }

    public void Dispose()
    {
        _transactionScope.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)