namespace Toolkit.Foundation; public class ValidationRule { private readonly Func? syncValidation; private readonly Func>? asyncValidation; public ValidationRule(Func validation, string message) { syncValidation = validation; Message = message; } public ValidationRule(Func> validation, string message) { asyncValidation = validation; Message = message; } public ValidationRule(Func validation) { syncValidation = validation; Message = ""; } public ValidationRule(Func> validation) { asyncValidation = validation; Message = ""; } public async Task Validate() { if (syncValidation is not null) { return syncValidation(); } if (asyncValidation is not null) { return await asyncValidation(); } return false; } public string Message { get; } }