namespace System.ComponentModel.DataAnnotations { /// /// Exception used for validation using . /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Justification = "SerializationInfo is internal in Silverlight")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly", Justification = "SecurityTransparent types cannot override GetObjectData, and this type does not serialize its instance fields anyway.")] public class ValidationException : Exception { private ValidationResult _validationResult; /// /// Gets the ValidationAttribute instance that triggered this exception. /// public ValidationAttribute ValidationAttribute { get; private set; } /// /// Gets the instance that describes the validation error. /// /// /// This property will never be null. /// public ValidationResult ValidationResult { get { if (this._validationResult == null) { this._validationResult = new ValidationResult(this.Message); } return this._validationResult; } } /// /// Gets the value that caused the validating attribute to trigger the exception /// public object Value { get; private set; } /// /// Constructor that accepts a structured describing the problem. /// /// The value describing the validation error /// The attribute that triggered this exception /// The value that caused the validating attribute to trigger the exception public ValidationException(ValidationResult validationResult, ValidationAttribute validatingAttribute, object value) : this(validationResult.ErrorMessage, validatingAttribute, value) { this._validationResult = validationResult; } /// /// Constructor that accepts an error message, the failing attribute, and the invalid value. /// /// The localized error message /// The attribute that triggered this exception /// The value that caused the validating attribute to trigger the exception public ValidationException(string errorMessage, ValidationAttribute validatingAttribute, object value) : base(errorMessage) { this.Value = value; this.ValidationAttribute = validatingAttribute; } // /// /// Default constructor. /// /// The long form of this constructor is preferred because it gives better error reporting. public ValidationException() : base() { } /// /// Constructor that accepts only a localized message /// /// The long form of this constructor is preferred because it gives better error reporting. /// The localized message public ValidationException(string message) : base(message) { } /// /// Constructor that accepts a localized message and an inner exception /// /// The long form of this constructor is preferred because it gives better error reporting /// The localized error message /// inner exception public ValidationException(string message, Exception innerException) : base(message, innerException) { } } }