示例#1
0
        public ImmutableArray <object> Get(IFormatWriter parameter)
        {
            var root   = _root.Get(parameter.Get());
            var result = root != null?_references.Get(root) : ImmutableArray <object> .Empty;

            return(result);
        }
            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);
            }
示例#3
0
 public ImmutableArray <object> Get(IFormatWriter parameter) => _references.Get(_root.Get(parameter.Get()));