.NET 6 Сериализация и десериализацияC#

Место общения программистов C#
Anonymous
.NET 6 Сериализация и десериализация

Сообщение Anonymous »

Мы использовали .NET Core 3.1 для сериализации/десериализации с помощью этого кода:
public UserData Clone()
{
return ((ICloneable)this).Clone() as UserData;
}

object ICloneable.Clone()
{
BinaryFormatter binary = new BinaryFormatter();

using (var ms = new MemoryStream())
{
binary.Serialize(ms, this);
ms.Flush();
ms.Position = 0;
return binary.Deserialize(ms);
}
}

var filteredData = records.Clone();

Но при обновлении до .NET 6 следующий код выдает ошибку:

Сериализация и десериализация BinaryFormatter отключено в приложении

Я попытался обновить код, как показано ниже, с помощью JsonSerializer, как показано ниже:
JsonSerializer serializer = new JsonSerializer();

using (var ms = new MemoryStream())
{
var jsonTextWriter = new JsonTextWriter(new StreamWriter(ms));
Serialize the object to JSON and write it to the MemoryStream.
serializer.Serialize(jsonTextWriter, this);
ms.Flush();
ms.Position = 0;
var jsonTextReader = new JsonTextReader(new StreamReader(ms));
return serializer.Deserialize(jsonTextReader);
}

Приведенный выше код строится нормально, но при вызове filteredData возвращает значение null:
var filteredData = records.Clone();

Я не уверен, правильно ли я это использую, или чего-то не хватает. Может ли кто-нибудь предоставить свою информацию? Спасибо
//Обновлен новый код
object ICloneable.Clone()
{
var serialized = JsonConvert.SerializeObject(this);
return JsonConvert.DeserializeObject(serialized);
}


Подробнее здесь: https://stackoverflow.com/questions/756 ... eserialize

Вернуться в «C#»