File: src\Shared\JsonSchemaExporter\NullabilityInfoContext\NullabilityInfo.cs
Web Access
Project: src\src\Libraries\Microsoft.Extensions.AI.Abstractions\Microsoft.Extensions.AI.Abstractions.csproj (Microsoft.Extensions.AI.Abstractions)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#if !NET6_0_OR_GREATER
using System.Diagnostics.CodeAnalysis;
 
#pragma warning disable SA1623 // Property summary documentation should match accessors
 
namespace System.Reflection
{
    /// <summary>
    /// A class that represents nullability info.
    /// </summary>
    [ExcludeFromCodeCoverage]
    internal sealed class NullabilityInfo
    {
        internal NullabilityInfo(Type type, NullabilityState readState, NullabilityState writeState,
            NullabilityInfo? elementType, NullabilityInfo[] typeArguments)
        {
            Type = type;
            ReadState = readState;
            WriteState = writeState;
            ElementType = elementType;
            GenericTypeArguments = typeArguments;
        }
 
        /// <summary>
        /// The <see cref="System.Type" /> of the member or generic parameter
        /// to which this NullabilityInfo belongs.
        /// </summary>
        public Type Type { get; }
 
        /// <summary>
        /// The nullability read state of the member.
        /// </summary>
        public NullabilityState ReadState { get; internal set; }
 
        /// <summary>
        /// The nullability write state of the member.
        /// </summary>
        public NullabilityState WriteState { get; internal set; }
 
        /// <summary>
        /// If the member type is an array, gives the <see cref="NullabilityInfo" /> of the elements of the array, null otherwise.
        /// </summary>
        public NullabilityInfo? ElementType { get; }
 
        /// <summary>
        /// If the member type is a generic type, gives the array of <see cref="NullabilityInfo" /> for each type parameter.
        /// </summary>
        public NullabilityInfo[] GenericTypeArguments { get; }
    }
 
    /// <summary>
    /// An enum that represents nullability state.
    /// </summary>
    internal enum NullabilityState
    {
        /// <summary>
        /// Nullability context not enabled (oblivious).
        /// </summary>
        Unknown,
 
        /// <summary>
        /// Non nullable value or reference type.
        /// </summary>
        NotNull,
 
        /// <summary>
        /// Nullable value or reference type.
        /// </summary>
        Nullable,
    }
}
#endif