private void ValidateAndSetField <T>(ref T fieldToSet, T value, FieldValidator <T> fieldValidator) { if (fieldValidator.Invoke(value, out string errorMessage)) { fieldToSet = value; } else { throw new ArgumentException(errorMessage); } }