// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; namespace Esiur.Data { /// /// A class that represents nullability info /// public 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; } /// /// The of the member or generic parameter /// to which this NullabilityInfo belongs /// public Type Type { get; } /// /// The nullability read state of the member /// public NullabilityState ReadState { get; internal set; } /// /// The nullability write state of the member /// public NullabilityState WriteState { get; internal set; } /// /// If the member type is an array, gives the of the elements of the array, null otherwise /// public NullabilityInfo? ElementType { get; } /// /// If the member type is a generic type, gives the array of for each type parameter /// public NullabilityInfo[] GenericTypeArguments { get; } } /// /// An enum that represents nullability state /// public enum NullabilityState { /// /// Nullability context not enabled (oblivious) /// Unknown, /// /// Non nullable value or reference type /// NotNull, /// /// Nullable value or reference type /// Nullable } }