<PackageReference Include="Newtonsoft.Json" Version="10.0.1" />

JsonObjectContract

Contract details for a Type used by the JsonSerializer.
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Utilities; using System; using System.Globalization; using System.Runtime.Serialization; namespace Newtonsoft.Json.Serialization { public class JsonObjectContract : JsonContainerContract { internal bool ExtensionDataIsJToken; private bool? _hasRequiredOrDefaultValueProperties; private ObjectConstructor<object> _overrideCreator; private ObjectConstructor<object> _parameterizedCreator; private JsonPropertyCollection _creatorParameters; private Type _extensionDataValueType; public MemberSerialization MemberSerialization { get; set; } public Required? ItemRequired { get; set; } public JsonPropertyCollection Properties { get; } public JsonPropertyCollection CreatorParameters { get { if (_creatorParameters == null) _creatorParameters = new JsonPropertyCollection(base.UnderlyingType); return _creatorParameters; } } public ObjectConstructor<object> OverrideCreator { get { return _overrideCreator; } set { _overrideCreator = value; } } internal ObjectConstructor<object> ParameterizedCreator { get { return _parameterizedCreator; } set { _parameterizedCreator = value; } } public ExtensionDataSetter ExtensionDataSetter { get; set; } public ExtensionDataGetter ExtensionDataGetter { get; set; } public Type ExtensionDataValueType { get { return _extensionDataValueType; } set { _extensionDataValueType = value; ExtensionDataIsJToken = ((object)value != null && typeof(JToken).IsAssignableFrom(value)); } } public Func<string, string> ExtensionDataNameResolver { get; set; } internal bool HasRequiredOrDefaultValueProperties { get { if (!_hasRequiredOrDefaultValueProperties.HasValue) { _hasRequiredOrDefaultValueProperties = false; if (ItemRequired.GetValueOrDefault(Required.Default) != 0) _hasRequiredOrDefaultValueProperties = true; else { foreach (JsonProperty property in Properties) { if (property.Required != 0 || ((int?)property.DefaultValueHandling & 2) == 2) { _hasRequiredOrDefaultValueProperties = true; break; } } } } return _hasRequiredOrDefaultValueProperties.GetValueOrDefault(); } } public JsonObjectContract(Type underlyingType) : base(underlyingType) { ContractType = JsonContractType.Object; Properties = new JsonPropertyCollection(base.UnderlyingType); } internal object GetUninitializedObject() { if (!JsonTypeReflector.FullyTrusted) throw new JsonException("Insufficient permissions. Creating an uninitialized '{0}' type requires full trust.".FormatWith(CultureInfo.InvariantCulture, NonNullableUnderlyingType)); return FormatterServices.GetUninitializedObject(NonNullableUnderlyingType); } } }