| File: System\ComponentModel\DataAnnotations\Base64StringAttribute.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.Buffers.Text; namespace System.ComponentModel.DataAnnotations { /// <summary> /// Specifies that a data field value is a well-formed Base64 string. /// </summary> /// <remarks> /// Recognition of valid Base64 is delegated to the <see cref="Convert"/> class, /// using the <see cref="Convert.TryFromBase64String(string, Span{byte}, out int)"/> method. /// </remarks> [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)] public class Base64StringAttribute : ValidationAttribute { /// <summary> /// Initializes a new instance of the <see cref="Base64StringAttribute"/> class. /// </summary> public Base64StringAttribute() { // Set DefaultErrorMessage not ErrorMessage, allowing user to set // ErrorMessageResourceType and ErrorMessageResourceName to use localized messages. DefaultErrorMessage = SR.Base64StringAttribute_Invalid; } /// <summary> /// Determines whether a specified object is valid. (Overrides <see cref="ValidationAttribute.IsValid(object)" />) /// </summary> /// <param name="value">The object to validate.</param> /// <returns> /// <see langword="true" /> if <paramref name="value"/> is <see langword="null"/> or is a valid Base64 string, /// otherwise <see langword="false" /> /// </returns> public override bool IsValid(object? value) { if (value is null) { return true; } if (value is not string valueAsString) { return false; } return Base64.IsValid(valueAsString); } } }