Futurum.Core.Polly
1.0.4
dotnet add package Futurum.Core.Polly --version 1.0.4
NuGet\Install-Package Futurum.Core.Polly -Version 1.0.4
<PackageReference Include="Futurum.Core.Polly" Version="1.0.4" />
paket add Futurum.Core.Polly --version 1.0.4
#r "nuget: Futurum.Core.Polly, 1.0.4"
// Install Futurum.Core.Polly as a Cake Addin #addin nuget:?package=Futurum.Core.Polly&version=1.0.4 // Install Futurum.Core.Polly as a Cake Tool #tool nuget:?package=Futurum.Core.Polly&version=1.0.4
Futurum.Core.Polly
Small dotnet library, allowing you to use Polly with Futurum.Core, based on the concepts behind 'Railway Oriented Programming'.
Try
Try to run func, using the Polly policy. If the policy fails, the failing result will be returned as a failure.
var result = await ResultPolly.TryAsync(func, () => ERROR_MESSAGE, pollyPolicy);
ThenTry
Combines Result.Then with ResultPolly.Try
var outputResult = await inputResult.ThenTryAsync(func, () => ERROR_MESSAGE, pollyPolicy);
HandleResult
Create a policy to handle Result
Policy.Handle<Exception>()
.HandleResult()
HandleResult<T>
Create a policy to handle Result<T>
Policy.Handle<Exception>()
.HandleResult<string>()
DelegateResult extensions
GetErrorMessage
Get the error message either from the Exception or the Result / Result<T>
var errorMessage = delegateResult.GetErrorMessage()
_pollyPolicy = Policy.Handle<Exception>()
.HandleResult<string>()
.WaitAndRetryAsync(new []{TimeSpan.FromSeconds(5), },
(delegateResult, timeSpan, retryCount, context) =>
{
var error = delegateResult.GetErrorMessage();
_logger.LogWarning("Retry - retryCount: '{RetryCount}'. Error : '{Error}'", retryCount, error);
});
DelegateResult GetErrorMessageSafe
Get the safe error message either from the Exception or the Result / Result<T>
var errorMessage = delegateResult.GetErrorMessageSafe()
_pollyPolicy = Policy.Handle<Exception>()
.HandleResult<string>()
.WaitAndRetryAsync(new []{TimeSpan.FromSeconds(5), },
(delegateResult, timeSpan, retryCount, context) =>
{
var error = delegateResult.GetErrorMessageSafe();
_logger.LogWarning("Retry - retryCount: '{RetryCount}'. Error : '{Error}'", retryCount, error);
});
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Futurum.Core (>= 1.0.13)
- Futurum.Microsoft.Extensions.DependencyInjection (>= 1.0.3)
- Polly (>= 7.2.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.