Мы использовали .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