<PackageReference Include="System.Drawing.Common" Version="10.0.0-preview.1.25080.3" />

ClassWithId

Class information that references another class record's metadata.
using System.Collections.Generic; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.Serialization; namespace System.Private.Windows.BinaryFormat.Serializer { [NullableContext(1)] [Nullable(0)] internal sealed class ClassWithId : ClassRecord, IRecord<ClassWithId>, IRecord { private readonly ClassRecord _metadataClass; public override Id ObjectId { get; } public override Id LibraryId { get; } public Id MetadataId { get; } public static RecordType RecordType => RecordType.ClassWithId; public ClassWithId(Id id, ClassRecord metadataClass, [Nullable(new byte[] { 1, 2 })] IReadOnlyList<object> memberValues) : base(metadataClass.ClassInfo, metadataClass.MemberTypeInfo, memberValues) { ObjectId = id; MetadataId = metadataClass.ObjectId; LibraryId = metadataClass.LibraryId; _metadataClass = metadataClass; } public ClassWithId(Id id, ClassRecord metadataClass, [Nullable(new byte[] { 1, 2 })] params object[] memberValues) : this(id, metadataClass, (IReadOnlyList<object>)memberValues) { } private protected override void Write(BinaryWriter writer) { writer.Write((byte)RecordType); writer.Write(ObjectId); writer.Write(MetadataId); ClassRecord metadataClass = _metadataClass; ClassWithMembersAndTypes classWithMembersAndTypes = metadataClass as ClassWithMembersAndTypes; if (classWithMembersAndTypes == null) { SystemClassWithMembersAndTypes systemClassWithMembersAndTypes = metadataClass as SystemClassWithMembersAndTypes; if (systemClassWithMembersAndTypes == null) throw new SerializationException(); ClassRecord.WriteValuesFromMemberTypeInfo(writer, systemClassWithMembersAndTypes.MemberTypeInfo, base.MemberValues); } else ClassRecord.WriteValuesFromMemberTypeInfo(writer, classWithMembersAndTypes.MemberTypeInfo, base.MemberValues); } public static implicit operator Id(ClassWithId value) { return value.MetadataId; } } }