From a800b5318868284228f8ee1fbba03246a516e332 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Fri, 10 Apr 2026 21:05:56 +0800 Subject: [PATCH] feat: use lightweight OneOf instead of LanguageExt --- .../BallanceTasEditor/BallanceTasEditor.csproj | 2 +- .../Frontend/Validator/ValidatorAdapter.cs | 14 +++++--------- .../Frontend/Validator/Validators.cs | 8 ++++---- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/BallanceTasEditor/BallanceTasEditor/BallanceTasEditor.csproj b/BallanceTasEditor/BallanceTasEditor/BallanceTasEditor.csproj index efcd7cb..53f668b 100644 --- a/BallanceTasEditor/BallanceTasEditor/BallanceTasEditor.csproj +++ b/BallanceTasEditor/BallanceTasEditor/BallanceTasEditor.csproj @@ -17,7 +17,7 @@ - + diff --git a/BallanceTasEditor/BallanceTasEditor/Frontend/Validator/ValidatorAdapter.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Validator/ValidatorAdapter.cs index 555f1c0..98ae9d6 100644 --- a/BallanceTasEditor/BallanceTasEditor/Frontend/Validator/ValidatorAdapter.cs +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Validator/ValidatorAdapter.cs @@ -17,20 +17,16 @@ namespace BallanceTasEditor.Frontend.Validator { private readonly IValidator m_Validator; public ValidationResult? Validate(TIn value, ValidationContext validationContext) { - // YYC MARK: - // Due to the shitty behavior of LanguageExt - // which do not allow I return nullable class from Match, - // I was forcely use MatchUnsafe. - return m_Validator.Validate(value).MatchUnsafe( - Left: v => ValidationResult.Success, - Right: err => new ValidationResult(err) + return m_Validator.Validate(value).Match( + v => ValidationResult.Success, + err => new ValidationResult(err) ); } public TOut Conclude(TIn value) { return m_Validator.Validate(value).Match( - Left: v => v, - Right: _ => throw new InvalidOperationException("Can not unwrap an error casting.") + v => v, + _ => throw new InvalidOperationException("Can not unwrap an error casting.") ); } diff --git a/BallanceTasEditor/BallanceTasEditor/Frontend/Validator/Validators.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Validator/Validators.cs index deb387e..4e59ef4 100644 --- a/BallanceTasEditor/BallanceTasEditor/Frontend/Validator/Validators.cs +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Validator/Validators.cs @@ -1,4 +1,4 @@ -using LanguageExt; +using OneOf; using System; using System.Collections.Generic; using System.Linq; @@ -8,11 +8,11 @@ using System.Threading.Tasks; namespace BallanceTasEditor.Frontend.Validator { public interface IValidator { - Either Validate(TIn value); + OneOf Validate(TIn value); } public sealed class FpsValidator : IValidator { - public Either Validate(string value) { + public OneOf Validate(string value) { if (uint.TryParse(value, System.Globalization.CultureInfo.InvariantCulture, out uint fps)) { if (Backend.FpsConverter.IsValidFps(fps)) { return fps; @@ -26,7 +26,7 @@ namespace BallanceTasEditor.Frontend.Validator { } public sealed class CountValidator : IValidator { - public Either Validate(string value) { + public OneOf Validate(string value) { if (int.TryParse(value, System.Globalization.CultureInfo.InvariantCulture, out int count)) { if (count > 0) { return count;