Код: Выделить всё
using ApplinxChannel.Api;
using LanguageExt;
using LanguageExt.Common;
using static LanguageExt.Prelude;
namespace ApplinxChannel.WebApi;
public readonly struct ProductionRuntime() :
HasValidator
{
public Aff Validate =>
SuccessAff(Validation.Success("success"));
}
#pragma warning disable CA1715
using LanguageExt;
using LanguageExt.Common;
namespace ApplinxChannel.Api;
public interface HasValidator
{
Aff Validate { get; }
}
Код: Выделить всё
using LanguageExt;
using LanguageExt.Common;
using LanguageExt.Pipes;
using static LanguageExt.Prelude;
namespace ApplinxChannel.Api;
public static class ValidationClass
{
public static Eff Validate()
where TRuntime : struct,
HasValidator
{
return from runtime in Eff(identity)
let validation = runtime.Validate.Bind(x => x.ToEff(errors =>
errors.Aggregate(Error.New("Errors: "), (e1, e2) => e1.Append(e2))))
select validation;
}
}
Инструкция return в методе Eff Validate возвращает Eff x.ToEff(errors =>
errors.Aggregate(Error.New("Errors:"), (e1, e2) => e1.Append(e2))))
select validationAff;
[/code]
Но это дает мне Aff при выборе validationAff, который не соответствует окончательному ожидаемому Eff, потому что вместо этого создается Eff.
Ожидается возможность получить объект string из Validate метод с использованием select validationAff. Прямо сейчас код создает ошибку компиляции, поскольку сигнатура метода Validate определена как Eff Validate, а оператор return создает объект типа Eff
Любая идея или предложение приветствуется.
Подробнее здесь: https://stackoverflow.com/questions/793 ... re-library
Мобильная версия