Added Validation logics

This commit is contained in:
TheXamlGuy
2024-06-16 13:42:36 +01:00
parent bca4a32964
commit a0b074c9e0
12 changed files with 160 additions and 58 deletions
+10 -28
View File
@@ -4,48 +4,30 @@ namespace Toolkit.Foundation;
public class Validator
{
private readonly Action? propertyChanged;
private readonly PropertyValidator? propertyValidation;
private readonly ValidationRule[] rules = [];
internal Validator(string propertyName,
Action propertyChanged)
public Validator(string propertyName,
ValidationRule[] rules)
{
PropertyName = propertyName;
this.propertyChanged = propertyChanged;
}
internal Validator(string propertyName,
Action propertyChanged,
PropertyValidator validation)
{
PropertyName = propertyName;
this.propertyChanged = propertyChanged;
propertyValidation = validation;
}
internal Validator(string propertyName,
PropertyValidator validation)
{
PropertyName = propertyName;
propertyValidation = validation;
this.rules = rules;
}
public string? PropertyName { get; }
public void Set() => propertyChanged?.Invoke();
public bool TryValidate([MaybeNull] out string message)
{
message = "";
if (propertyValidation is not null && propertyValidation.Validation?.Invoke() == false)
foreach (ValidationRule rule in rules)
{
message = propertyValidation.Message.Invoke();
return false;
if (rule.Validation?.Invoke() == false)
{
message = rule.Message?.Invoke();
return false;
}
}
propertyChanged?.Invoke();
return true;
}
}