public override Task <BindResult> BindModel(ModelBindingContext bindingContext) => Task.FromResult( BindResult.Create( GetValue(bindingContext) .Match( s => GetData().WithValue(s.Match(_ => _, () => (int?)null)), () => GetData().WithErrors(new[] { MappingError.Create("Not an Int", typeof(string), typeof(int)) }) ) ) );
public override Task <BindResult> BindModel(ModelBindingContext bindingContext) => Task.FromResult( BindResult.Create( GetValue(bindingContext) .Match( s => s.Match(i => GetData().WithUncheckedValue(i), () => GetData().WithNull()), () => GetData().WithErrors(new[] { MappingError.Create("Not an Int", typeof(string), typeof(int)) }) ) ) );
private Result <Guid, ValidationError[]> GetGuidValue(ModelBindingContext bindingContext) => Guid.TryParse(GetValue(bindingContext), out var guid) ? Result.Success <Guid, ValidationError[]>(guid) : Result.Failure <Guid, ValidationError[]>(new[] { MappingError.Create("Error mapping input to Guid.", typeof(string), typeof(Guid)) });
private Result <Option <Guid>, ValidationError[]> GetOptionGuidValue(ModelBindingContext bindingContext) => GetValue(bindingContext).Match( some: value => Guid.TryParse(value, out var guid) ? Result.Success <Option <Guid>, ValidationError[]>(Option.Some(guid)) : Result.Failure <Option <Guid>, ValidationError[]>(new[] { MappingError.Create("Error mapping input to Guid.", typeof(string), typeof(Guid)) }), none: () => Result.Success <Option <Guid>, ValidationError[]>(Option.None <Guid>()));