Cadenza : Cadenza Namespace

Either Class

Provides static utility methods to create Cadenza.Either<TValue, Exception> instances.

public static class Either

⊟ Thread Safety

This type is thread safe.

⊟ Remarks

Use the Either.TryParse methods if it is necessary to know why the value couldn't be parsed. Otherwise, use the Maybe.TryParse methods.

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

⊟ Members

See Also: Inherited members from object.

⊟ Public Methods

static
TryConvert<TResult> (object) : Either<TResult, Exception>
Documentation for this section has not yet been entered.
static
TryConvert<TSource,TResult> (TSource) : Either<TResult, Exception>
Attempt to convert the value within a TSource into an instance of type TResult.
static
TryParse<T> (string) : Either<T, Exception>
Attempt to convert the value within a string into an instance of type T.

⊟ Member Details

⊟ TryConvert<TResult> Generic Method

Documentation for this section has not yet been entered.

public static Either<TResult, Exception> TryConvert<TResult> (object value)

⊟ Type Parameters

TResult
Documentation for this section has not yet been entered.

⊟ Parameters

value
Documentation for this section has not yet been entered.

⊟ Returns

Documentation for this section has not yet been entered.

⊟ Exceptions

Type Reason
ArgumentNullException Documentation for this section has not yet been entered.

⊟ Remarks

Documentation for this section has not yet been entered.

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

⊟ TryConvert<TSource,TResult> Generic Method

Attempt to convert the value within a TSource into an instance of type TResult.

public static Either<TResult, Exception> TryConvert<TSource, TResult> (TSource value)

⊟ See Also

Convert.ChangeType(object, Type)
System.ComponentModel.TypeConverter.ConvertFrom(object)
System.ComponentModel.TypeConverter.ConvertTo(object, Type)
System.ComponentModel.TypeDescriptor.GetConverter(Type)

⊟ Type Parameters

TSource
The type to convert from.
TResult
The type to convert to.

⊟ Parameters

value
An instance of type TSource containing the value to convert into a TResult instance.

⊟ Returns

A Cadenza.Either<``1, Exception> containing either the parsed value or the error that results from attempting to convert value into an instance of type TResult.

⊟ Remarks

TryParse attempts to use a variety of mechanisms to convert value into a TResult, attempting, in order:

  1. TypeDescriptor.GetConverter(typeof(TResult)).ConvertFrom(value)
  2. TypeDescriptor.GetConverter(typeof(TSource)).ConvertTo(value, typeof(TResult))
  3. Convert.ChangeType(value, typeof(TResult))

If none of these methods are able to convert the value, then the returned Cadenza.Either<TSource, Exception> will contain a NotSupportedException, and Exception.InnerException will contain the original exception.

C# Example
Either<DateTime, Exception> a = Either.TryConvert<int, DateTime> (42);
Exception e = a.Fold (i => null, i => i);
Assert.IsNotNull (e);
Assert.IsTrue (typeof (Exception).IsAssignableFrom (e.GetType()));

Either<string, Exception> b = Either.TryConvert<int, string> (42);
string n2 = b.Fold (i => i, i => null);
Assert.AreEqual ("42", n2);

Either<int, Exception> c = 
	Either.TryConvert<CustomConvertible, int> (new CustomConvertible ());
int n3 = c.Fold (i => i, i => -1);
Assert.AreEqual (CustomConvertible.Int32, n3);

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0

⊟ TryParse<T> Generic Method

Attempt to convert the value within a string into an instance of type T.

public static Either<T, Exception> TryParse<T> (string value)

⊟ Type Parameters

T
The type to convert value to.

⊟ Parameters

value
A string containing the value to convert into a T.

⊟ Returns

A Cadenza.Either<``0, Exception> containing either the parsed value or the error that results from attempting to convert value into an instance of type T.

⊟ Remarks

This method calls Either.TryConvert``2(``0), with string as the TSource type.

C# Example
var v = Either.TryParse<int> ("3.14159");
var e = v.Fold (i => null, i => i);
Assert.IsNotNull (e);
Assert.IsTrue (typeof(Exception).IsAssignableFrom (e.GetType()));

v = Either.TryParse<int> ("42");
var n = v.Fold (i => i, i => -1);
Assert.AreEqual (42, n);

var v2 = Either.TryParse<int?> ("3.14159");
e = v2.Fold (i => null, i => i);
Assert.IsNotNull (e);
Assert.IsTrue (typeof(Exception).IsAssignableFrom (e.GetType()));

v2 = Either.TryParse<int?> ("42");
n = v2.Fold (i => i.Value, i => -1);
Assert.AreEqual (42, n);

⊟ Requirements

Namespace: Cadenza
Assembly: Cadenza (in Cadenza.dll)
Assembly Versions: 0.1.0.0