Export'а и Import'а объекта вручную. Наверно придётся писать свой сериализатор на базе System.Reflection
Builder, т.е. он имеет доступ к приватным конструкторам и может полностью воссоздать требуемый сложный объект по установленным правилам (Реализация Strategy)
Utf8Json для сериализации/десериализации. Я попытался сделать сериализацию через byte[] закинув этой всё в файл при помощи BinaryWriter. При чтении через BinaryReader я получил аналогичный byte[], который должен был восстановить исходный объект, т.к. количество байтов, их последовательность и значения совпадали (Что логично предположить, что объект нормально прочитался в точности 1 в 1), но при попытке десериализации я получил ошибку:System.InvalidOperationException: 'generated serializer for Document does not support deserialize.'if (string.IsNullOrWhiteSpace(path))
{
path = document.Metadata.SavedAt;
}
string fileName = document.Metadata.DocumentName;
string fileExtension = document.Metadata.Extension;
string fullFileName = $"{fileName}.{fileExtension}";
byte[] documentBytes = JsonSerializer.Serialize(document);
try
{
using (FileStream fileStream = File.Create(fullFileName))
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
{
binaryWriter.Write(documentBytes);
}
}
catch (Exception ex)
{
return ResponseService<string>.Error(ex.ToString());
}
return ResponseService<string>.Ok(fullFileName);byte[] readBytes = new byte[0];
using (FileStream fileStream = new FileStream(path, FileMode.Open))
using (BinaryReader binaryReader = new BinaryReader(fileStream))
{
readBytes = binaryReader.ReadBytes((int)binaryReader.BaseStream.Length);
}
try
{
Document result = JsonSerializer.Deserialize<Document>(readBytes);
return ResponseService<Document>.Ok(result);
}
catch (Exception ex)
{
return ResponseService<Document>.Error(ex.ToString());
}System.Json мне прямо сказала, что для таких действий нужен public конструктор без параметров, а NewtonSoft.Json просто кидало ошибку при попытке чтения символов (Что до сих пор остаётся под вопросом). Далее попробую сделать некие изменения в коде, если всё будет работать, выставлю остаточный ответ
private init?
public X x { get; private init; }
public HeaderStructure Header { get; private init; }
// ...public CoverPage CoverPage { get; set; }
public X1 x1 { get; set; }
public X2 x2 { get; set; }public TextContent Title { get; set; }
public TextContent x1 { get; set; }
public TextContent x2 { get; set; }public string Content { get; set; }
required