<PackageReference Include="System.ClientModel" Version="1.8.0" />

CollectionReader

abstract class CollectionReader
using System.ClientModel.Internal; using System.Runtime.CompilerServices; namespace System.ClientModel.Primitives { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal abstract class CollectionReader { internal static CollectionReader GetCollectionReader(ModelReaderWriterTypeBuilder.CollectionWrapper builder, ModelReaderWriterOptions options) { if (options.Format != "J" && options.Format != "W") throw new InvalidOperationException("Format '" + options.Format + "' is not supported. Only 'J' or 'W' format can be read as collections"); if (options.Format == "J") return new JsonCollectionReader(); object obj = builder.CreateElement(); IPersistableModel<object> persistableModel = obj as IPersistableModel<object>; if (persistableModel == null) throw new InvalidOperationException("'" + ((obj != null) ? obj.GetType().ToFriendlyName() : null) + "' must implement IPersistableModel"); string formatFromOptions = persistableModel.GetFormatFromOptions(options); if (formatFromOptions == "J" && persistableModel is IJsonModel<object>) return new JsonCollectionReader(); throw new InvalidOperationException(persistableModel.GetType().ToFriendlyName() + " has a wire format of '" + formatFromOptions + "' it must be 'J' to be read as a collection"); } internal abstract object Read(ModelReaderWriterTypeBuilder.CollectionWrapper collectionWrapper, BinaryData data, ModelReaderWriterTypeBuilder builder, ModelReaderWriterContext context, ModelReaderWriterOptions options); } }