Prototype of serialization for types that don't exist in the client domain

This commit is contained in:
Yoshi Askharoun
2023-05-25 02:27:06 -05:00
parent 81beb67fb2
commit 7515999d48
@@ -41,12 +41,21 @@ internal class BsonFormatter : IFormatter
{ {
CloseInput = false CloseInput = false
}; };
// If the type is accessible from the current domain,
// create an instance of it.
var typeName = _serializer.Deserialize<string>(reader);
var type = Type.GetType(typeName);
if (type != null)
return _serializer.Deserialize(reader, type);
return _serializer.Deserialize(reader); return _serializer.Deserialize(reader);
} }
public void Serialize(Stream serializationStream, object graph) public void Serialize(Stream serializationStream, object graph)
{ {
using BsonDataWriter writer = new(serializationStream); using BsonDataWriter writer = new(serializationStream);
_serializer.Serialize(writer, graph?.GetType().FullName);
_serializer.Serialize(writer, graph); _serializer.Serialize(writer, graph);
writer.Flush(); writer.Flush();
} }