From 27e6b7be9bce006da6aae651d9903573cf3fd180 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 31 Jan 2021 16:07:07 +0800 Subject: ... --- .../Models/Validation/StringSetValidator.cs | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 BackEnd/Timeline/Models/Validation/StringSetValidator.cs (limited to 'BackEnd/Timeline/Models') diff --git a/BackEnd/Timeline/Models/Validation/StringSetValidator.cs b/BackEnd/Timeline/Models/Validation/StringSetValidator.cs new file mode 100644 index 00000000..363ece10 --- /dev/null +++ b/BackEnd/Timeline/Models/Validation/StringSetValidator.cs @@ -0,0 +1,40 @@ +using System; +using System.Linq; + +namespace Timeline.Models.Validation +{ + public class StringSetValidator : Validator + { + public StringSetValidator(params string[] set) + { + Set = set; + } + +#pragma warning disable CA1819 // Properties should not return arrays + public string[] Set { get; set; } +#pragma warning restore CA1819 // Properties should not return arrays + + protected override (bool, string) DoValidate(string value) + { + var contains = Set.Contains(value, StringComparer.OrdinalIgnoreCase); + if (!contains) + { + return (false, "Not a valid value."); + } + else + { + return (true, GetSuccessMessage()); + } + } + } + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, + AllowMultiple = false)] + public class ValidationSetAttribute : ValidateWithAttribute + { + public ValidationSetAttribute(params string[] set) : base(new StringSetValidator(set)) + { + + } + } +} -- cgit v1.2.3