File: System\Private\Windows\Core\BinaryFormat\NullRecord.cs
Web Access
Project: src\src\System.Private.Windows.Core\src\System.Private.Windows.Core.csproj (System.Private.Windows.Core)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.Private.Windows.Core.BinaryFormat;
 
/// <summary>
///  Base class for null records.
/// </summary>
internal abstract partial class NullRecord
{
    private Count _count;
 
    public virtual Count NullCount
    {
        get => _count;
        private protected set
        {
#pragma warning disable CA1512 // Use ArgumentOutOfRangeException throw helper - not possible in this case
            if (value == 0)
            {
                throw new ArgumentOutOfRangeException(nameof(value));
            }
#pragma warning restore CA1512
 
            _count = value;
        }
    }
 
    internal static void Write(BinaryWriter writer, int nullCount)
    {
        switch (nullCount)
        {
            case 0:
                throw new ArgumentOutOfRangeException(nameof(nullCount));
            case 1:
                ObjectNull.Write(writer);
                break;
            case <= 255:
                new ObjectNullMultiple256(nullCount).Write(writer);
                break;
            default:
                new ObjectNullMultiple(nullCount).Write(writer);
                break;
        }
    }
}