Exemplo n.º 1
0
        private static void RunOnce()
        {
            Writer.StepIn(IonType.List);
            for (var i = 0; i < 1000; i++)
            {
                Writer.StepIn(IonType.Struct);

                Writer.SetFieldName("boolean");
                Writer.WriteBool(true);
                Writer.SetFieldName("string");
                Writer.WriteString("this is a string");
                Writer.SetFieldName("integer");
                Writer.WriteInt(int.MaxValue);
                Writer.SetFieldName("float");
                Writer.WriteFloat(432.23123f);
                Writer.SetFieldName("timestamp");
                Writer.WriteTimestamp(new Timestamp(new DateTime(2000, 11, 11)));

                Writer.StepOut();
            }

            byte[] bytes = null;
            Writer.StepOut();
            Writer.Flush(ref bytes);
            Writer.Finish();
        }
Exemplo n.º 2
0
        private static void Serializers(IonType type, dynamic value, IIonWriter writer)
        {
            switch (type)
            {
            case IonType.Bool:
                writer.WriteBool(value);
                break;

            case IonType.Blob:
                writer.WriteBlob(value);
                break;

            case IonType.Clob:
                writer.WriteClob(value);
                break;

            case IonType.Decimal:
                writer.WriteDecimal(value);
                break;

            case IonType.Float:
                writer.WriteFloat(value);
                break;

            case IonType.Int:
                writer.WriteInt(value);
                break;

            case IonType.String:
                writer.WriteString(value);
                break;

            case IonType.Symbol:
                writer.WriteString(value.Text);
                break;

            case IonType.Timestamp:
                writer.WriteTimestamp(value);
                break;

            case IonType.Null:
                writer.WriteNull(value);
                break;

            default:
                throw new InvalidOperationException("Unexpected type '" + type + "'");
            }
        }
Exemplo n.º 3
0
        private static bool TryWriteScalar(IIonWriter writer, object obj, Type type, IScalarWriter scalarWriter)
        {
            if (type.IsEnum)
            {
                var propValue = Enum.GetName(type, obj);
                writer.WriteSymbol(propValue);
                return(true);
            }

            if (type == typeof(string))
            {
                var propValue = (string)obj;
                writer.WriteString(propValue);
                return(true);
            }

            if (type == typeof(int))
            {
                var propValue = (int)obj;
                writer.WriteInt(propValue);
                return(true);
            }

            if (type == typeof(long))
            {
                var propValue = (long)obj;
                writer.WriteInt(propValue);
                return(true);
            }

            if (type == typeof(bool))
            {
                var propValue = (bool)obj;
                writer.WriteBool(propValue);
                return(true);
            }

            if (type == typeof(float))
            {
                var propValue = (float)obj;
                writer.WriteFloat(propValue);
                return(true);
            }

            if (type == typeof(double))
            {
                var propValue = (double)obj;
                writer.WriteFloat(propValue);
                return(true);
            }

            if (type == typeof(DateTime))
            {
                var propValue = (DateTime)obj;
                writer.WriteTimestamp(new Timestamp(propValue));
                return(true);
            }

            if (type == typeof(DateTimeOffset))
            {
                var propValue = (DateTimeOffset)obj;
                writer.WriteTimestamp(new Timestamp(propValue));
                return(true);
            }

            if (type == typeof(decimal))
            {
                var propValue = (decimal)obj;
                writer.WriteDecimal(propValue);
                return(true);
            }

            //try to see if we can write use the scalar writer
            if (scalarWriter != null)
            {
                var method        = scalarWriter.GetType().GetMethod(nameof(IScalarWriter.TryWriteValue));
                var genericMethod = method.MakeGenericMethod(type);
                return((bool)genericMethod.Invoke(scalarWriter, new[] { writer, obj }));
            }

            return(false);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Serialize date time value.
 /// </summary>
 ///
 /// <param name="writer">The Ion writer to be used for serialization.</param>
 /// <param name="item">The date time value to serialize.</param>
 public override void Serialize(IIonWriter writer, DateTime item)
 {
     writer.WriteTimestamp(new Timestamp(item));
 }