diff --git a/csla_binary/binary_writer.py b/csla_binary/binary_writer.py index 8ce4815..7c0b516 100644 --- a/csla_binary/binary_writer.py +++ b/csla_binary/binary_writer.py @@ -82,17 +82,37 @@ class CslaBinaryWriter: def write_object(self, value): # CslaBinaryWriter.Write(...) - raise NotImplementedError('Writing objects of dynamic type is not yet implemented') + if isinstance(value, bool): + return self.write_object_bool(value) + + if isinstance(value, bytes): + return self.write_object_bytearray(value) + + if isinstance(value, str): + return self.write_object_string(value) + + raise NotImplementedError('CslaBinaryWriter.Write not implemented for type {}'.format(type(value).__name__)) def write_object_bool(self, value): # CslaBinaryWriter.Write(bool) self.stream.write(bytes([CslaKnownTypes.Boolean.value, 1 if value else 0])) + def write_object_bytearray(self, value): + # CslaBinaryWriter.Write(byte[]) + self.stream.write(bytes([CslaKnownTypes.ByteArray.value])) + self.write_int32(len(value)) + self.stream.write(value) + def write_object_int32(self, value): # CslaBinaryWriter.Write(int) self.stream.write(bytes([CslaKnownTypes.Int32.value])) self.write_int32(value) + def write_object_string(self, value): + # CslaBinaryWriter.Write(string) + self.stream.write(bytes([CslaKnownTypes.String.value])) + self.write_string(value) + def write_object_system_string(self, value): # CslaBinaryWriter.WriteSystemString if value in self.keywords_dictionary: