I've seen a custom validation attribute used for this before, like this:
(I've given sample with a list but could be adapted for array or you could use list)
public class MustHaveOneElementAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
var list = value as IList;
if (list != null)
{
return list.Count > 0;
}
return false;
}
}
[MustHaveOneElementAttribute (ErrorMessage = "At least a task is required")]
public List<Person> TaskDescriptions { get; private set; }
// as of C# 8/9 this could be more elegantly done with
public class MustHaveOneElementAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return value is IList {Count: > 0};
}
}
Credit to Antonio Falcão Jr. for elegance