1
0
Files
BallanceTasToolbox/BallanceTasEditor/BallanceTasEditor/Frontend/Validators/Validator.cs
2026-04-12 10:25:21 +08:00

43 lines
1.3 KiB
C#

using OneOf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BallanceTasEditor.Frontend.Validators {
public interface IValidator<TIn, TOut> {
OneOf<TOut, string> Validate(TIn value);
}
public sealed class FpsValidator : IValidator<string, uint> {
public OneOf<uint, string> Validate(string value) {
if (uint.TryParse(value, System.Globalization.CultureInfo.InvariantCulture, out uint fps)) {
if (Backend.FpsConverter.IsValidFps(fps)) {
return fps;
} else {
return "Given FPS is out of range.";
}
} else {
return "Given string can not be parsed as unsigned integer.";
}
}
}
public sealed class CountValidator : IValidator<string, int> {
public OneOf<int, string> Validate(string value) {
if (int.TryParse(value, System.Globalization.CultureInfo.InvariantCulture, out int count)) {
if (count > 0) {
return count;
} else {
return "Given count must be greater than zero.";
}
} else {
return "Given string can not be parsed as integer.";
}
}
}
}