File: System\Private\Windows\BinaryFormat\Serializer\MemberTypeInfo.cs
Web Access
Project: src\winforms\src\System.Private.Windows.Core\src\Microsoft.Private.Windows.Core.csproj (Microsoft.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.BinaryFormat.Serializer;
 
/// <summary>
///  Member type info.
/// </summary>
/// <remarks>
///  <para>
///   <see href="https://learn.microsoft.com/openspecs/windows_protocols/ms-nrbf/aa509b5a-620a-4592-a5d8-7e9613e0a03e">
///    [MS-NRBF] 2.3.1.2
///   </see>
///  </para>
/// </remarks>
[DebuggerDisplay("{DebuggerDisplay,nq}")]
internal readonly struct MemberTypeInfo
{
    internal BinaryType Type { get; init; }
    internal object? Info { get; init; }
 
    internal MemberTypeInfo(BinaryType type, object? info)
    {
        Type = type;
        Info = info;
    }
 
    private string DebuggerDisplay => Info switch
    {
        null => Type.ToString()!,
        Type type => type.Name,
        PrimitiveType primitive => primitive.ToString()!,
        ClassTypeInfo info => info.ToString()!,
        string typeName => typeName,
        _ => throw new InvalidOperationException()
    };
}