#### [Abblix\.Utils](https://www.abblix.com/en/docs/api/abblix-utils 'index')
### [Abblix\.Utils](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils 'Abblix\.Utils')

## ResultExtensions Class

Provides extension methods for working with [Result&lt;TSuccess,TFailure&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>') types\.

```csharp
public static class ResultExtensions
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → ResultExtensions
### Methods

## ResultExtensions\.Bind\<TSuccess,TFailure,TNext\>\(this Task\<Result\<TSuccess,TFailure\>\>, Func\<TSuccess,Result\<TNext,TFailure\>\>\) Method {#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__)}

Binds a synchronous result\-producing function to the result of a task, if the result is successful\.

```csharp
public static System.Threading.Tasks.Task<Abblix.Utils.Result<TNext,TFailure>> Bind<TSuccess,TFailure,TNext>(this System.Threading.Tasks.Task<Abblix.Utils.Result<TSuccess,TFailure>> resultTask, System.Func<TSuccess,Abblix.Utils.Result<TNext,TFailure>> func);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TSuccess}

The type of the original success value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TFailure}

The type of the failure\.

###### `TNext` {#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TNext}

The type of the next success value\.
#### Parameters

###### `resultTask` [System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TSuccess 'Abblix\.Utils\.ResultExtensions\.Bind\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,Abblix\.Utils\.Result\<TNext,TFailure\>\>\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TFailure 'Abblix\.Utils\.ResultExtensions\.Bind\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,Abblix\.Utils\.Result\<TNext,TFailure\>\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1') {#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).resultTask}

The asynchronous task producing a result\.

###### `func` [System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TSuccess 'Abblix\.Utils\.ResultExtensions\.Bind\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,Abblix\.Utils\.Result\<TNext,TFailure\>\>\)\.TSuccess')[,](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TNext](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TNext 'Abblix\.Utils\.ResultExtensions\.Bind\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,Abblix\.Utils\.Result\<TNext,TFailure\>\>\)\.TNext')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TFailure 'Abblix\.Utils\.ResultExtensions\.Bind\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,Abblix\.Utils\.Result\<TNext,TFailure\>\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2') {#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).func}

The synchronous function to bind if the result is successful\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TNext](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TNext 'Abblix\.Utils\.ResultExtensions\.Bind\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,Abblix\.Utils\.Result\<TNext,TFailure\>\>\)\.TNext')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Bind_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,Abblix.Utils.Result_TNext,TFailure__).TFailure 'Abblix\.Utils\.ResultExtensions\.Bind\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,Abblix\.Utils\.Result\<TNext,TFailure\>\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task representing the new result after binding\.

## ResultExtensions\.BindAsync\<TSuccess,TFailure,TNext\>\(this Task\<Result\<TSuccess,TFailure\>\>, Func\<TSuccess,Task\<Result\<TNext,TFailure\>\>\>\) Method {#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___)}

Asynchronously binds a result\-producing function to the result of a task, if the result is successful\.

```csharp
public static System.Threading.Tasks.Task<Abblix.Utils.Result<TNext,TFailure>> BindAsync<TSuccess,TFailure,TNext>(this System.Threading.Tasks.Task<Abblix.Utils.Result<TSuccess,TFailure>> resultTask, System.Func<TSuccess,System.Threading.Tasks.Task<Abblix.Utils.Result<TNext,TFailure>>> func);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TSuccess}

The type of the original success value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TFailure}

The type of the failure\.

###### `TNext` {#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TNext}

The type of the next success value\.
#### Parameters

###### `resultTask` [System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TSuccess 'Abblix\.Utils\.ResultExtensions\.BindAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TNext,TFailure\>\>\>\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TFailure 'Abblix\.Utils\.ResultExtensions\.BindAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TNext,TFailure\>\>\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1') {#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).resultTask}

The asynchronous task producing a result\.

###### `func` [System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TSuccess 'Abblix\.Utils\.ResultExtensions\.BindAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TNext,TFailure\>\>\>\)\.TSuccess')[,](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TNext](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TNext 'Abblix\.Utils\.ResultExtensions\.BindAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TNext,TFailure\>\>\>\)\.TNext')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TFailure 'Abblix\.Utils\.ResultExtensions\.BindAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TNext,TFailure\>\>\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2') {#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).func}

The function to bind if the result is successful\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TNext](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TNext 'Abblix\.Utils\.ResultExtensions\.BindAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TNext,TFailure\>\>\>\)\.TNext')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.BindAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_Abblix.Utils.Result_TNext,TFailure___).TFailure 'Abblix\.Utils\.ResultExtensions\.BindAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TNext,TFailure\>\>\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task representing the new result after binding\.

## ResultExtensions\.Ensure\<TSuccess,TFailure\>\(this TSuccess, Func\<TSuccess,bool\>, TFailure\) Method {#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure)}

Ensures that a value satisfies a specified predicate; otherwise, returns a failure\.

```csharp
public static Abblix.Utils.Result<TSuccess,TFailure> Ensure<TSuccess,TFailure>(this TSuccess value, System.Func<TSuccess,bool> predicate, TFailure failure);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).TSuccess}

The type of the value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).TFailure}

The type of the failure\.
#### Parameters

###### `value` [TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.Ensure\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TSuccess,bool\>, TFailure\)\.TSuccess') {#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).value}

The value to validate\.

###### `predicate` [System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.Ensure\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TSuccess,bool\>, TFailure\)\.TSuccess')[,](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2') {#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).predicate}

The predicate to evaluate\.

###### `failure` [TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).TFailure 'Abblix\.Utils\.ResultExtensions\.Ensure\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TSuccess,bool\>, TFailure\)\.TFailure') {#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).failure}

The failure to return if the predicate is not satisfied\.

#### Returns
[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.Ensure\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TSuccess,bool\>, TFailure\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.Ensure_TSuccess,TFailure_(thisTSuccess,System.Func_TSuccess,bool_,TFailure).TFailure 'Abblix\.Utils\.ResultExtensions\.Ensure\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TSuccess,bool\>, TFailure\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')  
A successful result if the predicate is satisfied; otherwise, a failed result\.

## ResultExtensions\.EnsureAsync\<TSuccess,TFailure\>\(this Task\<TSuccess\>, Func\<TSuccess,bool\>, TFailure\) Method {#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure)}

Asynchronously ensures that a value satisfies a specified predicate; otherwise, returns a failure\.

```csharp
public static System.Threading.Tasks.Task<Abblix.Utils.Result<TSuccess,TFailure>> EnsureAsync<TSuccess,TFailure>(this System.Threading.Tasks.Task<TSuccess> valueTask, System.Func<TSuccess,bool> predicate, TFailure failure);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).TSuccess}

The type of the value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).TFailure}

The type of the failure\.
#### Parameters

###### `valueTask` [System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.EnsureAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TSuccess,bool\>, TFailure\)\.TSuccess')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1') {#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).valueTask}

The asynchronous task producing the value\.

###### `predicate` [System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.EnsureAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TSuccess,bool\>, TFailure\)\.TSuccess')[,](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2') {#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).predicate}

The predicate to evaluate\.

###### `failure` [TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).TFailure 'Abblix\.Utils\.ResultExtensions\.EnsureAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TSuccess,bool\>, TFailure\)\.TFailure') {#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).failure}

The failure to return if the predicate is not satisfied\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.EnsureAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TSuccess,bool\>, TFailure\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.EnsureAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TSuccess,bool_,TFailure).TFailure 'Abblix\.Utils\.ResultExtensions\.EnsureAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TSuccess,bool\>, TFailure\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task representing the successful or failed result\.

## ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, Func\<TFailure\>\) Method {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_)}

Converts a nullable value into a successful result if not null; otherwise, returns a failure\.

```csharp
public static Abblix.Utils.Result<TSuccess,TFailure> FailIfNull<TSuccess,TFailure>(this TSuccess? value, System.Func<TFailure> failure);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_).TSuccess}

The type of the value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_).TFailure}

The type of the failure\.
#### Parameters

###### `value` [TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_).TSuccess 'Abblix\.Utils\.ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TFailure\>\)\.TSuccess') {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_).value}

The nullable value to check\.

###### `failure` [System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-1 'System\.Func\`1')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_).TFailure 'Abblix\.Utils\.ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TFailure\>\)\.TFailure')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-1 'System\.Func\`1') {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_).failure}

The failure to return if the value is null\.

#### Returns
[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_).TSuccess 'Abblix\.Utils\.ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TFailure\>\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,System.Func_TFailure_).TFailure 'Abblix\.Utils\.ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, System\.Func\<TFailure\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')  
A successful result if the value is not null; otherwise, a failed result\.

## ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, TFailure\) Method {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure)}

Converts a nullable value into a successful result if not null; otherwise, returns a failure\.

```csharp
public static Abblix.Utils.Result<TSuccess,TFailure> FailIfNull<TSuccess,TFailure>(this TSuccess? value, TFailure failure);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure).TSuccess}

The type of the value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure).TFailure}

The type of the failure\.
#### Parameters

###### `value` [TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, TFailure\)\.TSuccess') {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure).value}

The nullable value to check\.

###### `failure` [TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure).TFailure 'Abblix\.Utils\.ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, TFailure\)\.TFailure') {#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure).failure}

The failure to return if the value is null\.

#### Returns
[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, TFailure\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNull_TSuccess,TFailure_(thisTSuccess,TFailure).TFailure 'Abblix\.Utils\.ResultExtensions\.FailIfNull\<TSuccess,TFailure\>\(this TSuccess, TFailure\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')  
A successful result if the value is not null; otherwise, a failed result\.

## ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this Task\<TSuccess\>, Func\<TFailure\>\) Method {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_)}

Asynchronously converts a nullable value into a successful result if not null; otherwise, returns a failure\.

```csharp
public static System.Threading.Tasks.Task<Abblix.Utils.Result<TSuccess,TFailure>> FailIfNullAsync<TSuccess,TFailure>(this System.Threading.Tasks.Task<TSuccess?> valueTask, System.Func<TFailure> failure);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_).TSuccess}

The type of the value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_).TFailure}

The type of the failure\.
#### Parameters

###### `valueTask` [System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_).TSuccess 'Abblix\.Utils\.ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TFailure\>\)\.TSuccess')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1') {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_).valueTask}

The asynchronous task producing the nullable value\.

###### `failure` [System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-1 'System\.Func\`1')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_).TFailure 'Abblix\.Utils\.ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TFailure\>\)\.TFailure')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-1 'System\.Func\`1') {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_).failure}

The failure to return if the value is null\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_).TSuccess 'Abblix\.Utils\.ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TFailure\>\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,System.Func_TFailure_).TFailure 'Abblix\.Utils\.ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, System\.Func\<TFailure\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task representing the successful or failed result\.

## ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this Task\<TSuccess\>, TFailure\) Method {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure)}

Asynchronously converts a nullable value into a successful result if not null; otherwise, returns a failure\.

```csharp
public static System.Threading.Tasks.Task<Abblix.Utils.Result<TSuccess,TFailure>> FailIfNullAsync<TSuccess,TFailure>(this System.Threading.Tasks.Task<TSuccess?> valueTask, TFailure failure);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure).TSuccess}

The type of the value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure).TFailure}

The type of the failure\.
#### Parameters

###### `valueTask` [System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, TFailure\)\.TSuccess')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1') {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure).valueTask}

The asynchronous task producing the nullable value\.

###### `failure` [TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure).TFailure 'Abblix\.Utils\.ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, TFailure\)\.TFailure') {#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure).failure}

The failure to return if the value is null\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure).TSuccess 'Abblix\.Utils\.ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, TFailure\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.FailIfNullAsync_TSuccess,TFailure_(thisSystem.Threading.Tasks.Task_TSuccess_,TFailure).TFailure 'Abblix\.Utils\.ResultExtensions\.FailIfNullAsync\<TSuccess,TFailure\>\(this System\.Threading\.Tasks\.Task\<TSuccess\>, TFailure\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task representing the successful or failed result\.

## ResultExtensions\.MapSuccessAsync\<TSuccess,TFailure,TNext\>\(this Task\<Result\<TSuccess,TFailure\>\>, Func\<TSuccess,Task\<TNext\>\>\) Method {#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__)}

Asynchronously maps a successful result to another type\.

```csharp
public static System.Threading.Tasks.Task<Abblix.Utils.Result<TNext,TFailure>> MapSuccessAsync<TSuccess,TFailure,TNext>(this System.Threading.Tasks.Task<Abblix.Utils.Result<TSuccess,TFailure>> resultTask, System.Func<TSuccess,System.Threading.Tasks.Task<TNext>> onSuccess);
```
#### Type parameters

###### `TSuccess` {#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TSuccess}

The type of the original success value\.

###### `TFailure` {#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TFailure}

The type of the failure\.

###### `TNext` {#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TNext}

The type to map the success value to\.
#### Parameters

###### `resultTask` [System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TSuccess 'Abblix\.Utils\.ResultExtensions\.MapSuccessAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<TNext\>\>\)\.TSuccess')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TFailure 'Abblix\.Utils\.ResultExtensions\.MapSuccessAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<TNext\>\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1') {#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).resultTask}

The asynchronous task producing a result\.

###### `onSuccess` [System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[TSuccess](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TSuccess 'Abblix\.Utils\.ResultExtensions\.MapSuccessAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<TNext\>\>\)\.TSuccess')[,](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[TNext](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TNext 'Abblix\.Utils\.ResultExtensions\.MapSuccessAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<TNext\>\>\)\.TNext')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2') {#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).onSuccess}

The asynchronous mapping function\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TNext](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TNext 'Abblix\.Utils\.ResultExtensions\.MapSuccessAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<TNext\>\>\)\.TNext')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[TFailure](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.ResultExtensions#Abblix.Utils.ResultExtensions.MapSuccessAsync_TSuccess,TFailure,TNext_(thisSystem.Threading.Tasks.Task_Abblix.Utils.Result_TSuccess,TFailure__,System.Func_TSuccess,System.Threading.Tasks.Task_TNext__).TFailure 'Abblix\.Utils\.ResultExtensions\.MapSuccessAsync\<TSuccess,TFailure,TNext\>\(this System\.Threading\.Tasks\.Task\<Abblix\.Utils\.Result\<TSuccess,TFailure\>\>, System\.Func\<TSuccess,System\.Threading\.Tasks\.Task\<TNext\>\>\)\.TFailure')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\<TSuccess,TFailure\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task representing the new result with the mapped success value\.
