2016-05-01 6 views
0

Ich bin auf der Suche nach einer Möglichkeit, Avro zu einem Byte-Array in Avro C# Bibliothek zu serialisieren. Es gibt einen Link für Avro Java-Bibliothek zu tun ist, wie in der folgenden Link von Avro Dokumentation beschrieben: https://cwiki.apache.org/confluence/display/AVRO/FAQ#FAQ-SerializingtoabytearrayWie Serialisierung Avro zu einem Byte-Array mit Avro C# Bibliothek?

-Code von oben Link kopiert:

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(out, null); 

DatumWriter<User> writer = new SpecificDatumWriter<User>(User.getClassSchema()); 

writer.write(user, encoder); 
encoder.flush(); 
out.close(); 
byte[] serializedBytes = out.toByteArray(); 

Aber ich habe nicht einen Weg zu tun in Avro C# gefunden Bibliothek. Ich bin im Grunde auf der Suche nach C# Äquivalent von oben genannten Code.

Antwort

0

Sie können diese Methoden verwenden, um in und von einem Objekt in ein Byte-Array zu konvertieren und umgekehrt. Code extrahiert von https://stackoverflow.com/a/18205093/6138713

// Convert an object to a byte array 
private byte[] ObjectToByteArray(Object obj) 
{ 
    if(obj == null) 
     return null; 

    BinaryFormatter bf = new BinaryFormatter(); 
    MemoryStream ms = new MemoryStream(); 
    bf.Serialize(ms, obj); 

    return ms.ToArray(); 
} 

// Convert a byte array to an Object 
private Object ByteArrayToObject(byte[] arrBytes) 
{ 
    MemoryStream memStream = new MemoryStream(); 
    BinaryFormatter binForm = new BinaryFormatter(); 
    memStream.Write(arrBytes, 0, arrBytes.Length); 
    memStream.Seek(0, SeekOrigin.Begin); 
    Object obj = (Object) binForm.Deserialize(memStream); 

    return obj; 
} 
+0

Sorry, ich habe meine Frage aktualisiert, da ich vielleicht unklar gewesen wäre. Ich suchte nach Avro ByteArray Serialisierungstechnik. –

+0

Ihr Avro-Objekt wird immer noch als ein Objekttyp in C# .net betrachtet, daher können Sie diese Methode weiterhin verwenden. Übergeben Sie einfach, was auch immer Ihr Objekt ist, um es in ein Byte-Array umzuwandeln. –