File: System\Formats\Nrbf\PrimitiveType.cs
Web Access
Project: src\src\libraries\System.Formats.Nrbf\src\System.Formats.Nrbf.csproj (System.Formats.Nrbf)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.Formats.Nrbf;
 
/// <summary>
/// Primitive type.
/// </summary>
/// <remarks>
/// PrimitiveTypeEnumeration enumeration is described in <see href="https://learn.microsoft.com/openspecs/windows_protocols/ms-nrbf/4e77849f-89e3-49db-8fb9-e77ee4bc7214">[MS-NRBF] 2.1.2.3</see>.
/// </remarks>
internal enum PrimitiveType : byte
{
    Boolean = 1,
    Byte = 2,
    Char = 3,
    // 4 is not used in the protocol
    Decimal = 5,
    Double = 6,
    Int16 = 7,
    Int32 = 8,
    Int64 = 9,
    SByte = 10,
    Single = 11,
    TimeSpan = 12,
    DateTime = 13,
    UInt16 = 14,
    UInt32 = 15,
    UInt64 = 16
    // This internal enum no longer contains Null and String as they were always illegal:
    // - In case of BinaryArray (NRBF 2.4.3.1):
    // "If the BinaryTypeEnum value is Primitive, the PrimitiveTypeEnumeration
    // value in AdditionalTypeInfo MUST NOT be Null (17) or String (18)."
    // - In case of MemberPrimitiveTyped (NRBF 2.5.1):
    // "PrimitiveTypeEnum (1 byte): A PrimitiveTypeEnumeration
    // value that specifies the Primitive Type of data that is being transmitted.
    // This field MUST NOT contain a value of 17 (Null) or 18 (String)."
    // - In case of ArraySinglePrimitive (NRBF 2.4.3.3):
    // "A PrimitiveTypeEnumeration value that identifies the Primitive Type
    // of the items of the Array. The value MUST NOT be 17 (Null) or 18 (String)."
    // - In case of MemberTypeInfo (NRBF 2.3.1.2):
    // "When the BinaryTypeEnum value is Primitive, the PrimitiveTypeEnumeration
    // value in AdditionalInfo MUST NOT be Null (17) or String (18)."
}