JsonObjectContract
Contract details for a Type used by the JsonSerializer.
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Utilities;
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace Newtonsoft.Json.Serialization
{
[System.Runtime.CompilerServices.NullableContext(2)]
[System.Runtime.CompilerServices.Nullable(0)]
public class JsonObjectContract : JsonContainerContract
{
internal bool ExtensionDataIsJToken;
private bool? _hasRequiredOrDefaultValueProperties;
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
private ObjectConstructor<object> _overrideCreator;
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
private ObjectConstructor<object> _parameterizedCreator;
private JsonPropertyCollection _creatorParameters;
private Type _extensionDataValueType;
public MemberSerialization MemberSerialization { get; set; }
public MissingMemberHandling? MissingMemberHandling { get; set; }
public Required? ItemRequired { get; set; }
public NullValueHandling? ItemNullValueHandling { get; set; }
[System.Runtime.CompilerServices.Nullable(1)]
[field: System.Runtime.CompilerServices.Nullable(1)]
public JsonPropertyCollection Properties {
[System.Runtime.CompilerServices.NullableContext(1)]
get;
}
[System.Runtime.CompilerServices.Nullable(1)]
public JsonPropertyCollection CreatorParameters {
[System.Runtime.CompilerServices.NullableContext(1)]
get {
if (_creatorParameters == null)
_creatorParameters = new JsonPropertyCollection(base.UnderlyingType);
return _creatorParameters;
}
}
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
public ObjectConstructor<object> OverrideCreator {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
get {
return _overrideCreator;
}
[param: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
set {
_overrideCreator = value;
}
}
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
internal ObjectConstructor<object> ParameterizedCreator {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
get {
return _parameterizedCreator;
}
[param: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
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));
}
}
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1,
1
})]
[field: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1,
1
})]
public Func<string, string> ExtensionDataNameResolver {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1,
1
})]
get;
[param: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1,
1
})]
set;
}
internal bool HasRequiredOrDefaultValueProperties {
get {
if (!_hasRequiredOrDefaultValueProperties.HasValue) {
_hasRequiredOrDefaultValueProperties = false;
if (ItemRequired.GetValueOrDefault(Required.Default) != 0)
_hasRequiredOrDefaultValueProperties = true;
else {
using (IEnumerator<JsonProperty> enumerator = Properties.GetEnumerator()) {
while (true) {
if (enumerator.MoveNext()) {
JsonProperty current = enumerator.Current;
if (current.Required == Required.Default) {
DefaultValueHandling? nullable = (DefaultValueHandling?)((int?)current.DefaultValueHandling & 2);
DefaultValueHandling defaultValueHandling = DefaultValueHandling.Populate;
if (!((nullable.GetValueOrDefault() == defaultValueHandling) & nullable.HasValue))
continue;
}
_hasRequiredOrDefaultValueProperties = true;
}
break;
}
}
}
}
return _hasRequiredOrDefaultValueProperties.GetValueOrDefault();
}
}
[System.Runtime.CompilerServices.NullableContext(1)]
public JsonObjectContract(Type underlyingType)
: base(underlyingType)
{
ContractType = JsonContractType.Object;
Properties = new JsonPropertyCollection(base.UnderlyingType);
}
}
}