namespace King; internal class ValidityTest { private readonly Predicate _isValid; private readonly Func _getError; public ValidityTest(Predicate isValid, string error) : this(isValid, () => error) { } public ValidityTest(Predicate isValid, Func getError) { _isValid = isValid; _getError = getError; } public bool IsValid(float value, IReadWrite io) { if (_isValid(value)) { return true; } io.Write(_getError()); return false; } }