internal override async Task SerializeOverrideAsync(BoundedStream stream, EventShuttle eventShuttle, CancellationToken cancellationToken) { var childSerializer = (ValueValueNode)CreateChildSerializer(); var childSerializedType = childSerializer.TypeNode.GetSerializedType(); var itemLength = GetConstFieldItemLength(); var boundValue = BoundValue; var count = GetConstFieldCount(); // handle null value case if (boundValue == null) { if (count != null) { var defaultValue = TypeNode.GetDefaultValue(childSerializedType); for (var i = 0; i < count.Value; i++) { await childSerializer .SerializeAsync(stream, defaultValue, childSerializedType, itemLength, cancellationToken) .ConfigureAwait(false); } } return; } await PrimitiveCollectionSerializeOverrideAsync(stream, boundValue, childSerializer, childSerializedType, itemLength, count, cancellationToken); await SerializeTerminationAsync(stream, eventShuttle, cancellationToken); }
internal override void SerializeOverride(BoundedStream stream, EventShuttle eventShuttle) { var childSerializer = (ValueValueNode)CreateChildSerializer(); var childSerializedType = childSerializer.TypeNode.GetSerializedType(); var itemLength = GetConstFieldItemLength(); var boundValue = BoundValue; var count = GetConstFieldCount(); // handle null value case if (boundValue == null) { if (count != null) { var defaultValue = TypeNode.GetDefaultValue(childSerializedType); for (var i = 0; i < count.Value; i++) { childSerializer.Serialize(stream, defaultValue, childSerializedType, itemLength); } } return; } PrimitiveCollectionSerializeOverride(stream, boundValue, childSerializer, childSerializedType, itemLength, count); SerializeTermination(stream, eventShuttle); }