public void WriteDiscriminator(ref CborWriter writer, Type actualType)
        {
            if (!_discriminatorsByType.TryGetValue(actualType, out T discriminator))
            {
                throw new CborException($"Unknown discriminator for type: {actualType}");
            }

            _converter.Write(ref writer, discriminator);
        }
        public bool WriteArrayItem(ref CborWriter writer, ref WriterContext context)
        {
            if (context.array.Length == 0)
            {
                return(false);
            }

            _itemConverter.Write(ref writer, context.array[context.index++]);
            return(context.index < context.array.Length);
        }
Пример #3
0
        public static string Write <T>(T value, CborOptions options = null)
        {
            options = options ?? CborOptions.Default;

            using (ByteBufferWriter bufferWriter = new ByteBufferWriter())
            {
                CborWriter         writer    = new CborWriter(bufferWriter);
                ICborConverter <T> converter = options.Registry.ConverterRegistry.Lookup <T>();
                converter.Write(ref writer, value);
                return(BitConverter.ToString(bufferWriter.WrittenSpan.ToArray()).Replace("-", ""));
            }
        }
Пример #4
0
        public void Write(ref CborWriter writer, object obj)
        {
            if (_memberGetter == null)
            {
                throw new CborException($"No member getter for '{Encoding.UTF8.GetString(_memberName.Span)}'");
            }

            TM value = _memberGetter((T)obj);

            if (_isClass && value == null && (_requirementPolicy == RequirementPolicy.DisallowNull ||
                                              _requirementPolicy == RequirementPolicy.Always))
            {
                throw new CborException($"Property '{Encoding.UTF8.GetString(_memberName.Span)}' cannot be null.");
            }

            _converter.Write(ref writer, value, _lengthMode);
        }
Пример #5
0
        public void Write(ref CborWriter writer, ref T instance)
        {
            if (_memberGetter == null)
            {
                throw new CborException($"No member getter for '{MemberNameAsString}'");
            }

            TM value = _memberGetter(ref instance);

            if (_isClass && value == null && (_requirementPolicy == RequirementPolicy.DisallowNull ||
                                              _requirementPolicy == RequirementPolicy.Always))
            {
                throw new CborException($"Property '{MemberNameAsString}' cannot be null.");
            }

            _converter.Write(ref writer, value);
        }