示例#1
0
 public void Write(IFormatWriter writer, object instance)
 {
     if (_specification.IsSatisfiedBy(instance))
     {
         _serializer.Write(writer, instance);
     }
 }
示例#2
0
            public void Write(IFormatWriter writer, object instance)
            {
                var item = writer.Get();

                if (_conditions.IsSatisfiedBy(item))
                {
                    _instances.Assign(item, instance);
                }

                _container.Write(writer, instance);
            }
        public void Write(IFormatWriter writer, object instance)
        {
            var lists = _reserved.Get(writer);

            foreach (var o in Yield(instance))
            {
                var reserved = lists.Get(o);
                if (reserved.Any())
                {
                    reserved.Pop();
                }
            }

            _serializer.Write(writer, instance);
        }
示例#4
0
        public void Write(IFormatWriter writer, object instance)
        {
            var list = instance as IList;

            if (list != null)
            {
                var references = _references.Get(writer);
                var hold       = _reserved.Get(writer);
                foreach (var item in list)
                {
                    if (references.Contains(item))
                    {
                        hold.Get(item)
                        .Push(list);
                    }
                }
            }

            _serializer.Write(writer, instance);
        }
示例#5
0
            public void Write(IFormatWriter writer, object instance)
            {
                if (_conditions.IsSatisfiedBy(writer.Get()))
                {
                    var references = _references.Get(instance);
                    if (references.Any())
                    {
                        var typeInfo = instance.GetType()
                                       .GetTypeInfo();
                        var line    = Environment.NewLine;
                        var message =
                            $"{line}{line}Here is a list of found references:{line}{string.Join(line, references.Select(x => $"- {x}"))}";

                        throw new CircularReferencesDetectedException(
                                  $"The provided instance of type '{typeInfo}' contains circular references within its graph. Serializing this instance would result in a recursive, endless loop. To properly serialize this instance, please create a serializer that has referential support enabled by extending it with the ReferencesExtension.{message}",
                                  _container);
                    }
                }

                _container.Write(writer, instance);
            }
示例#6
0
 public void Write(IFormatWriter writer, object instance)
 {
     _serializer.Write(writer, _write.Get(instance));
 }
 public void Write(IFormatWriter writer, object instance) => _serializer.Write(writer, instance);
 public void Write(IFormatWriter writer, object instance)
 {
     _migrator.Write(writer, instance);
     _serializer.Write(writer, instance);
 }
示例#9
0
 public void Write(IFormatWriter writer, object instance)
 => _serializer.Write(writer, _converter.Format(instance));