System.Runtime .Serialization.SerializationException: 'Произошла ошибка при десериализации объекта типа SampleClass. Данные на корневом уровне недействительны. Строка 1, позиция 1.
Ранее я записал XML в файл с помощью DataContractSerializer, поэтому он должен быть действительным. Как это исправить?
Добавляю пример кода ниже:
Код: Выделить всё
using System.IO.MemoryMappedFiles;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
namespace TestMigration
{
public class Program
{
[SupportedOSPlatform("windows")]
public static void Main(string[] args)
{
using (var mmf = MemoryMappedFile.CreateNew("TempName", 10240, MemoryMappedFileAccess.ReadWrite))
{
WriteToMemoryMappedFile(mmf);
var infoObj = ReadFromMemoryMappedFile(mmf);
Console.WriteLine(infoObj?.Name);
}
}
private static void WriteToMemoryMappedFile(MemoryMappedFile mmf)
{
var serializer = new DataContractSerializer(typeof(SampleClass));
var infoObj = new SampleClass { Name = "TestApp" };
using (var stream = mmf.CreateViewStream(0, 0, MemoryMappedFileAccess.Write))
{
serializer.WriteObject(stream, infoObj);
stream.Flush();
}
}
private static SampleClass? ReadFromMemoryMappedFile(MemoryMappedFile mmf)
{
var serializer = new DataContractSerializer(typeof(SampleClass));
using (var stream = mmf.CreateViewStream(0, 0, MemoryMappedFileAccess.Read))
{
stream.Position = 0;
return (SampleClass?)serializer.ReadObject(stream);
}
}
}
}
[DataContract]
public class SampleClass
{
[DataMember]
public string? Name { get; set; }
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... lizationex