mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2025-05-06 11:32:59 +00:00
64 lines
2.1 KiB
C#
64 lines
2.1 KiB
C#
// 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
|
|
{
|
|
/// <summary>
|
|
/// A class that represents nullability info
|
|
/// </summary>
|
|
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;
|
|
}
|
|
|
|
/// <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>
|
|
public 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
|
|
}
|
|
} |