public override Expression GetSerializerExpression(Type memberType, Expression getterExp, ParameterExpression writerExp) { Debug.Assert(_innerBuilder != null, "Underlying builder can't be null for CheckNullBuilder"); if (memberType.GetTypeInfo().IsValueType) { return(_innerBuilder.GetSerializerExpression(memberType, getterExp, writerExp)); } var boolType = typeof(bool); var valueExp = getterExp; var writeMethod = GetWriterMethod("Write", boolType); var bodyExp = _innerBuilder.GetSerializerExpression(memberType, getterExp, writerExp); return(Expression.IfThenElse( Expression.Equal(valueExp, Expression.Constant(null, memberType)), Expression.Call(writerExp, writeMethod, Expression.Constant(false, boolType)), Expression.Block(Expression.Call(writerExp, writeMethod, Expression.Constant(true, boolType)), bodyExp))); }
public override Expression GetSerializerExpression(Type memberType, Expression getterExp, ParameterExpression writerExp) { return(_baseBuilder.GetSerializerExpression(_enumBaseType, Expression.Convert(getterExp, _enumBaseType), writerExp)); }