Expression ILiteralEncodingStrategy.LargeInteger(EncoderVisitor visitor, BigInteger value)
        {
            Expression bytes = Expression.NewArrayInit(typeof(byte),
                                                       value.ToByteArray().Select(b => Expression.Constant(b, typeof(byte))));
            Expression initializer = Expression.Convert(Expression.New(NativeLiteralEncodingStrategy.BigIntegerCtor, bytes), typeof(object));

            return(PreboxedConstants.GetConstant(value) ?? this.DefineLiteral(visitor, "BigInteger", string.Format("{0}", value, CultureInfo.InvariantCulture), initializer));
        }
        Expression ILiteralEncodingStrategy.ScaledDecimal(EncoderVisitor visitor, BigDecimal value)
        {
            // The numerator of the BigDecimal
            Expression bytes = Expression.NewArrayInit(typeof(byte),
                                                       value.Numerator.ToByteArray().Select(b => Expression.Constant(b, typeof(byte))));
            Expression numerator = Expression.New(NativeLiteralEncodingStrategy.BigIntegerCtor, bytes);
            // The scale
            Expression scale = Expression.Constant(value.Scale, typeof(int));
            // Constructing a new BigDecimal
            Expression initializer = Expression.Convert(Expression.New(NativeLiteralEncodingStrategy.BigDecimalCtor, numerator, scale), typeof(object));

            return(PreboxedConstants.GetConstant(value) ?? this.DefineLiteral(visitor, "BigDecimal", string.Format("{0}", value, CultureInfo.InvariantCulture), initializer));
        }
        Expression ILiteralEncodingStrategy.SmallInteger(EncoderVisitor visitor, int value)
        {
            Expression initializer = Expression.Convert(Expression.Constant(value, typeof(int)), typeof(object));

            return(PreboxedConstants.GetConstant(value) ?? this.DefineLiteral(visitor, "Int", string.Format("{0}", value, CultureInfo.InvariantCulture), initializer));
        }
        Expression ILiteralEncodingStrategy.Character(EncoderVisitor visitor, char value)
        {
            Expression initializer = Expression.Convert(Expression.Constant(value, typeof(char)), typeof(object));

            return(PreboxedConstants.GetConstant(value) ?? this.DefineLiteral(visitor, "Char", string.Format("0x{0:X4}", (int)value, CultureInfo.InvariantCulture), initializer));
        }
Exemplo n.º 5
0
 Expression ILiteralEncodingStrategy.SmallInteger(EncoderVisitor visitor, int value)
 {
     return(Expression.Constant(PreboxedConstants.GetValue(value) ?? value, typeof(object)));
 }
Exemplo n.º 6
0
 Expression ILiteralEncodingStrategy.ScaledDecimal(EncoderVisitor visitor, BigDecimal value)
 {
     return(Expression.Constant(PreboxedConstants.GetValue(value) ?? value, typeof(object)));
 }
Exemplo n.º 7
0
 Expression ILiteralEncodingStrategy.FloatD(EncoderVisitor visitor, double value)
 {
     return(Expression.Constant(PreboxedConstants.GetValue(value) ?? value, typeof(object)));
 }