internal override string ValidValue(object aValue) { DesignByContract.Check.Require(aValue != null, string.Format(CommonStrings.XMustNotBeNull, "aValue")); string dateTimeString = aValue.ToString(); if (!Iso8601DateTime.ValidIso8601DateTime(dateTimeString)) { return(string.Format(AmValidationStrings.InvalidIsoDateTimeX, dateTimeString)); } Iso8601DateTime isoDateTime = new Iso8601DateTime(dateTimeString); if (isoDateTime == null) { throw new ApplicationException(string.Format(CommonStrings.XIsNull, "isoDateTime")); } if (this.Pattern != null) { if (!IsMatchPattern(isoDateTime)) { return(string.Format(AmValidationStrings.DateTimeXDoesNotMatchPatternY, dateTimeString, Pattern)); } } if (this.Range != null) { if (!this.Range.Has(isoDateTime)) { return(string.Format(AmValidationStrings.DateTimeXOutOfRange, dateTimeString)); } } return(string.Empty); }