Missmatch between generic type parameter naming T and TValue
//-----------------------------------------------------
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior
// and will be lost when the code is regenerated.
// <auto-generated />
//-----------------------------------------------------
#nullable enable
using System.Diagnostics.CodeAnalysis;
using DotNetElements.Core.ResultObject;
namespace PocketClimber.Playground
{
internal partial class DeserializeResult<T> : ErrorResult<string>
{
protected readonly TValue Value;
protected DeserializeResult(bool isOk, TValue value, string error) : base(isOk, error)
{
Value = value;
}
public static DeserializeResult<T> Ok(TValue value) => new(true, value, default!);
public static DeserializeResult<T> Fail(string error) => new(false, default!, error);
// Optional helper functions
public bool TryGetValue([NotNullWhen(true)] out TValue? value, [NotNullWhen(false)] out string? error)
{
value = Value;
error = Error;
return IsOk;
}
public TValue GetValueUnsafe() => Value ?? throw new ResultFailException();
// Implicit conversions
public static implicit operator DeserializeResult<T>(Result<TValue> value) => new(true, value.GetValueUnsafe(), default!);
public static implicit operator DeserializeResult<T>(TValue value) => new(true, value, default!);
public static implicit operator DeserializeResult<T>(DeserializeResultHelper.DeserializeResult result) => result.IsFail ? new(false, default!, result.GetErrorUnsafe()) : throw new ResultException("Can not convert a successful result to a result with a value");
// Optional conversions
public Result AsResult() => IsOk ? Result.Ok() : Result.Fail();
}
internal static partial class DeserializeResultHelper
{
public class DeserializeResult : ErrorResult<string>
{
private DeserializeResult(bool isOk, string error) : base(isOk, error) { }
public static DeserializeResult Ok() => new(true, default!);
public static DeserializeResult Fail(string error) => new(false, error);
// Implicit conversions
public static implicit operator DeserializeResult(ResultOk _) => new(true, default!);
// Optional conversions
public Result AsResult => IsOk ? Result.Ok() : Result.Fail();
}
public static DeserializeResult Fail(string error) => DeserializeResult.Fail(error);
public static DeserializeResult Fail(string error, Action logAction)
{
logAction.Invoke();
return DeserializeResult.Fail(error);
}
public static DeserializeResult<T> OkIf<TValue>(bool isSuccess, TValue value, string error)
{
return isSuccess ? value : DeserializeResult<T>.Fail(error);
}
public static DeserializeResult<T> OkIf<TValue>(Func<bool> predicate, TValue value, string error)
{
return predicate.Invoke() ? value : DeserializeResult<T>.Fail(error);
}
public static DeserializeResult<T> OkIfNotNull<TValue>(TValue? value, string error)
{
return value is not null ? value : DeserializeResult<T>.Fail(error);
}
}
}
Missmatch between generic type parameter naming T and TValue