私は範囲管理のためにusing
ステートメントを純粋に使用したいと思います。 IDisposable
を実装する基本オブジェクトへの明示的な参照を保持することを省略することはできますか?RHV(右辺値)でusingステートメントを使用できますか?
class ITransactionScope : IDisposable {}
class TransactionGuard : ITransactionScope {...}
class DbContext
{
public IDisposable ITransactionScope()
{
return new TransactionGuard();
}
}
は、私は、次の操作を行うことができます:
void main()
{
var dbContext = new DbContext();
using (dbContext.TransactionScope())
{
// the guard is not accessed here
}
}
はusing
文の中に生きているTransactionGuard
インスタンスですか?これはdeclaraions与え例えば
、
あなたはそれを試すことができます。返されたスコープインスタンスの 'Dispose()'メソッドにブレークポイントを設定し、それが呼び出されるかどうかを確認します。 – linuxuser27
私は同じ戦略を使用しているので、あなたができることを本当に願っています:) –
あなたが気にするのはスコープ管理だから、コードに中括弧を入れることはできません( 'using'なしで)。コード内のスコープは? –