<PackageReference Include="NJsonSchema" Version="11.0.0-preview005" />

JsonReferenceBase<T>

A base class which may reference another object.
using Newtonsoft.Json; using System.Runtime.CompilerServices; namespace NJsonSchema.References { [System.Runtime.CompilerServices.NullableContext(2)] [System.Runtime.CompilerServices.Nullable(0)] public abstract class JsonReferenceBase<[System.Runtime.CompilerServices.Nullable(1)] T> : IJsonReferenceBase, IDocumentPathProvider where T : class, IJsonReference { private T _reference; [JsonIgnore] public string DocumentPath { get; set; } [JsonProperty("$ref", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] string IJsonReferenceBase.ReferencePath { get; set; } [JsonIgnore] public virtual T Reference { get { return _reference; } set { if (_reference != value) { _reference = value; ((IJsonReferenceBase)this).ReferencePath = null; } } } [JsonIgnore] IJsonReference IJsonReferenceBase.Reference { get { return Reference; } set { Reference = (T)value; } } } }