protected override async Task <IJsonReference> VisitJsonReferenceAsync(IJsonReference reference, string path, string typeNameHint, CancellationToken cancellationToken)
            {
                cancellationToken.ThrowIfCancellationRequested();
                if (reference.ReferencePath != null && reference.Reference == null)
                {
                    if (_replaceRefsRound)
                    {
                        if (path.EndsWith("/definitions/" + typeNameHint) || path.EndsWith("/schemas/" + typeNameHint))
                        {
                            // inline $refs in "definitions"
                            return(await _referenceResolver
                                   .ResolveReferenceWithoutAppendAsync(_rootObject, reference.ReferencePath, reference.GetType(), _contractResolver)
                                   .ConfigureAwait(false));
                        }
                    }
                    else
                    {
                        // load $refs and add them to "definitions"
                        reference.Reference = await _referenceResolver
                                              .ResolveReferenceAsync(_rootObject, reference.ReferencePath, reference.GetType(), _contractResolver)
                                              .ConfigureAwait(false);
                    }
                }

                return(reference);
            }
Example #2
0
            protected override async Task <IJsonReference> VisitJsonReferenceAsync(IJsonReference reference, string path, string typeNameHint)
            {
                if (reference.ReferencePath != null && reference.Reference == null)
                {
                    if (_replaceRefsRound)
                    {
                        if (path.EndsWith("/definitions/" + typeNameHint))
                        {
                            // inline $refs in "definitions"
                            return(await _referenceResolver
                                   .ResolveReferenceWithoutAppendAsync(_rootObject, reference.ReferencePath)
                                   .ConfigureAwait(false));
                        }
                    }
                    else
                    {
                        // load $refs and add them to "definitions"
                        reference.Reference = await _referenceResolver
                                              .ResolveReferenceAsync(_rootObject, reference.ReferencePath)
                                              .ConfigureAwait(false);
                    }
                }

                return(reference);
            }