private void DetermineIgnoreCondition(JsonIgnoreCondition?ignoreCondition, bool defaultValueIsNull) { if (ignoreCondition != null) { Debug.Assert(MemberInfo != null); Debug.Assert(ignoreCondition != JsonIgnoreCondition.Always); if (ignoreCondition == JsonIgnoreCondition.WhenWritingDefault) { IgnoreDefaultValuesOnWrite = true; } else if (ignoreCondition == JsonIgnoreCondition.WhenWritingNull) { if (defaultValueIsNull) { IgnoreDefaultValuesOnWrite = true; } else { ThrowHelper.ThrowInvalidOperationException_IgnoreConditionOnValueTypeInvalid(this); } } } #pragma warning disable CS0618 // IgnoreNullValues is obsolete else if (Options.IgnoreNullValues) { Debug.Assert(Options.DefaultIgnoreCondition == JsonIgnoreCondition.Never); if (defaultValueIsNull) { IgnoreDefaultValuesOnRead = true; IgnoreDefaultValuesOnWrite = true; } } else if (Options.DefaultIgnoreCondition == JsonIgnoreCondition.WhenWritingNull) { Debug.Assert(!Options.IgnoreNullValues); if (defaultValueIsNull) { IgnoreDefaultValuesOnWrite = true; } } else if (Options.DefaultIgnoreCondition == JsonIgnoreCondition.WhenWritingDefault) { Debug.Assert(!Options.IgnoreNullValues); IgnoreDefaultValuesOnWrite = true; } #pragma warning restore CS0618 // IgnoreNullValues is obsolete }