Skip to content

Extensions

Daniel Cañizares Corrales edited this page Nov 25, 2019 · 10 revisions

You can easily integrate Vortex with any .Net library, but we have some extensions that will make your life even easier!

Vortex AutoMapper Extensions

Extension methods for IMapper that returns mapped data wrapped directly into a Vortex's Monad/Functor Maybe.

using Equilaterus.Vortex.AutoMapper.Extensions;
...

// Returns IMaybe<DestinationType>
var maybeResult = IMapper.MaybeMap<DestinationType>(sourceEntity);

Real world example

In our Sample Project ConcurrentOrdering we used MaybeMap in this controller, seamlessly integrating AutoMapper in a method written with Vortex.

Links

Any other .Net type

Objects

We've included extended methods to wrap any object into a Vortex Maybe.

using Equilaterus.Vortex.Helpers;
...

// Returns Maybe<YourObjectType>
var str = "Vortex Rocks!";
var maybeString = str.AsMaybe();

// Returns "Vortex Rocks!"
var result = maybeString.Match(s => s, string.Empty); 

If your object is null it will return an Empty Maybe.

using Equilaterus.Vortex.Helpers;
...

// Returns Maybe<YourObjectType>
var str = null;
var maybeString = str.AsMaybe();

// Returns ""
var result = maybeString.Match(s => s, string.Empty); 

Primitive types

For Nullable types (for example int?, bool?, float?, double?, etc) you can use the AsMaybe extension:

using Equilaterus.Vortex.Helpers;
...

// Returns Maybe<int?>
int? number = 12;
var maybeInt = number.AsMaybe();

// Returns 12
var result = maybeString.Match(n => n, -1); 

For non-nullable types (as int, bool, float, double, etc) you'll only need to instantiate a new Maybe:

using Equilaterus.Vortex;
...

// Returns Maybe<int>
var maybeInt = new Maybe(10);

// Returns 10
var result = maybeString.Match(n => n, 0);