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);
}
}