private static bool TryDeserializeByteArray(IIonReader reader, Type type, IScalarConverter scalarConverter, ref object result)
        {
            if (!type.IsAssignableFrom(typeof(byte[])))
            {
                return(false);
            }
            if (reader.CurrentType != IonType.Blob && reader.CurrentType != IonType.Clob)
            {
                return(false);
            }

            var bytes = new byte[reader.GetLobByteSize()];

            reader.GetBytes(bytes);
            result = bytes;
            return(true);
        }
예제 #2
0
        public static void Struct_OneBlob(IIonReader reader)
        {
            reader.MoveNext();
            reader.StepIn();
            Assert.AreEqual(IonType.Blob, reader.MoveNext());
            Assert.AreEqual("blobbbb", reader.CurrentFieldName);
            var lobByteSize = reader.GetLobByteSize();

            Assert.AreEqual(100, lobByteSize);
            var blob = new byte[lobByteSize];

            reader.GetBytes(blob);

            for (var i = 0; i < 100; i++)
            {
                Assert.AreEqual((byte)1, blob[i]);
            }
        }
 /// <summary>
 /// Deserialize Guid value.
 /// </summary>
 ///
 /// <param name="reader">The Ion reader to be used for deserialization.</param>
 ///
 /// <returns>The deserialized Guid value.</returns>
 public override Guid Deserialize(IIonReader reader)
 {
     byte[] blob = new byte[reader.GetLobByteSize()];
     reader.GetBytes(blob);
     return(new Guid(blob));
 }
 public override byte[] Deserialize(IIonReader reader)
 {
     return(new byte[reader.GetLobByteSize()]);
 }
 /// <summary>
 /// Deserialize CLOB value.
 /// </summary>
 ///
 /// <param name="reader">The Ion reader to be used for deserialization.</param>
 ///
 /// <returns>The deserialized CLOB value.</returns>
 public override string Deserialize(IIonReader reader)
 {
     byte[] clob = new byte[reader.GetLobByteSize()];
     reader.GetBytes(clob);
     return(Encoding.UTF8.GetString(clob));
 }