File: System\Private\Windows\Core\BinaryFormat\Serializer\RecordMap.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.Serializer;
 
/// <summary>
///  Map of records that ensures that IDs are only entered once.
/// </summary>
internal class RecordMap : IReadOnlyRecordMap
{
    private readonly Dictionary<int, IRecord> _recordMap = [];
 
    public IRecord this[Id id] => _recordMap[id];
 
    public void AddRecord(IRecord record)
    {
        Id id = record.Id;
        if (id.IsNull)
        {
            return;
        }
 
        if ((int)id < 0)
        {
            // Negative record Ids should never be referenced. Duplicate negative ids can be
            // exported by the writer. The root object Id can be negative.
            _recordMap.TryAdd(id, record);
            return;
        }
 
        _recordMap.Add(id, record);
    }
}