| File: System\ComponentModel\DataAnnotations\ValidationException.cs | Web Access |
| Project: src\runtime\src\libraries\System.ComponentModel.Annotations\src\System.ComponentModel.Annotations.csproj (System.ComponentModel.Annotations) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel; using System.Runtime.Serialization; namespace System.ComponentModel.DataAnnotations { /// <summary> /// Exception used for validation using <see cref="ValidationAttribute" />. /// </summary> [Serializable] [System.Runtime.CompilerServices.TypeForwardedFrom("System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")] public class ValidationException : Exception { private ValidationResult? _validationResult; /// <summary> /// Constructor that accepts a structured <see cref="ValidationResult" /> describing the problem. /// </summary> /// <param name="validationResult">The value describing the validation error</param> /// <param name="validatingAttribute">The attribute that triggered this exception</param> /// <param name="value">The value that caused the validating attribute to trigger the exception</param> public ValidationException(ValidationResult validationResult, ValidationAttribute? validatingAttribute, object? value) : this(validationResult.ErrorMessage, validatingAttribute, value) { _validationResult = validationResult; } /// <summary> /// Constructor that accepts an error message, the failing attribute, and the invalid value. /// </summary> /// <param name="errorMessage">The localized error message</param> /// <param name="validatingAttribute">The attribute that triggered this exception</param> /// <param name="value">The value that caused the validating attribute to trigger the exception</param> public ValidationException(string? errorMessage, ValidationAttribute? validatingAttribute, object? value) : base(errorMessage) { Value = value; ValidationAttribute = validatingAttribute; } /// <summary> /// Default constructor. /// </summary> /// <remarks>The long form of this constructor is preferred because it gives better error reporting.</remarks> public ValidationException() { } /// <summary> /// Constructor that accepts only a localized message /// </summary> /// <remarks>The long form of this constructor is preferred because it gives better error reporting.</remarks> /// <param name="message">The localized message</param> public ValidationException(string? message) : base(message) { } /// <summary> /// Constructor that accepts a localized message and an inner exception /// </summary> /// <remarks>The long form of this constructor is preferred because it gives better error reporting</remarks> /// <param name="message">The localized error message</param> /// <param name="innerException">inner exception</param> public ValidationException(string? message, Exception? innerException) : base(message, innerException) { } /// <summary> /// Constructor that takes a SerializationInfo. /// </summary> /// <param name="info">The SerializationInfo.</param> /// <param name="context">The StreamingContext.</param> [Obsolete(Obsoletions.LegacyFormatterImplMessage, DiagnosticId = Obsoletions.LegacyFormatterImplDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] [EditorBrowsable(EditorBrowsableState.Never)] protected ValidationException(SerializationInfo info, StreamingContext context) : base(info, context) { } /// <summary> /// Gets the <see>ValidationAttribute</see> instance that triggered this exception. /// </summary> public ValidationAttribute? ValidationAttribute { get; } /// <summary> /// Gets the <see cref="ValidationResult" /> instance that describes the validation error. /// </summary> /// <value> /// This property will never be null. /// </value> public ValidationResult ValidationResult => _validationResult ??= new ValidationResult(Message); /// <summary> /// Gets the value that caused the validating attribute to trigger the exception /// </summary> public object? Value { get; } } }