Ejemplo n.º 1
0
        private void DetermineIgnoreCondition(BinaryIgnoreCondition?ignoreCondition, bool defaultValueIsNull)
        {
            if (ignoreCondition != null)
            {
                Debug.Assert(MemberInfo != null);
                Debug.Assert(ignoreCondition != BinaryIgnoreCondition.Always);

                if (ignoreCondition == BinaryIgnoreCondition.WhenWritingDefault)
                {
                    IgnoreDefaultValuesOnWrite = true;
                }
                else if (ignoreCondition == BinaryIgnoreCondition.WhenWritingNull)
                {
                    if (defaultValueIsNull)
                    {
                        IgnoreDefaultValuesOnWrite = true;
                    }
                    else
                    {
                        ThrowHelper.ThrowInvalidOperationException_IgnoreConditionOnValueTypeInvalid(this);
                    }
                }
            }
            else if (Options.IgnoreNullValues)
            {
                Debug.Assert(Options.DefaultIgnoreCondition == BinaryIgnoreCondition.Never);
                if (defaultValueIsNull)
                {
                    IgnoreDefaultValuesOnRead  = true;
                    IgnoreDefaultValuesOnWrite = true;
                }
            }
            else if (Options.DefaultIgnoreCondition == BinaryIgnoreCondition.WhenWritingNull)
            {
                Debug.Assert(!Options.IgnoreNullValues);
                if (defaultValueIsNull)
                {
                    IgnoreDefaultValuesOnWrite = true;
                }
            }
            else if (Options.DefaultIgnoreCondition == BinaryIgnoreCondition.WhenWritingDefault)
            {
                Debug.Assert(!Options.IgnoreNullValues);
                IgnoreDefaultValuesOnWrite = true;
            }
        }