PolicyResult<TResult>
The captured result of executing a policy
using System;
namespace Polly
{
public class PolicyResult<TResult>
{
private readonly TResult _result;
private readonly OutcomeType _outcome;
private readonly Exception _finalException;
private readonly ExceptionType? _exceptionType;
private readonly TResult _finalHandledResult;
private readonly FaultType? _faultType;
public OutcomeType Outcome => _outcome;
public Exception FinalException => _finalException;
public ExceptionType? ExceptionType => _exceptionType;
public TResult Result => _result;
public TResult FinalHandledResult => _finalHandledResult;
public FaultType? FaultType => _faultType;
internal PolicyResult(TResult result, OutcomeType outcome, Exception finalException, ExceptionType? exceptionType)
: this(result, outcome, finalException, exceptionType, default(TResult), (FaultType?)null)
{
}
internal PolicyResult(TResult result, OutcomeType outcome, Exception finalException, ExceptionType? exceptionType, TResult finalHandledResult, FaultType? faultType)
{
_result = result;
_outcome = outcome;
_finalException = finalException;
_exceptionType = exceptionType;
_finalHandledResult = finalHandledResult;
_faultType = faultType;
}
internal static PolicyResult<TResult> Successful(TResult result)
{
return new PolicyResult<TResult>(result, OutcomeType.Successful, null, null);
}
internal static PolicyResult<TResult> Failure(Exception exception, ExceptionType exceptionType)
{
return new PolicyResult<TResult>(default(TResult), OutcomeType.Failure, exception, exceptionType, default(TResult), (exceptionType != 0) ? Polly.FaultType.UnhandledException : Polly.FaultType.ExceptionHandledByThisPolicy);
}
internal static PolicyResult<TResult> Failure(TResult handledResult)
{
return new PolicyResult<TResult>(default(TResult), OutcomeType.Failure, null, null, handledResult, Polly.FaultType.ResultHandledByThisPolicy);
}
}
}