Я преобразовал свой проект в. net core 3.1 (c#), теперь, когда я пытаюсь выполнить двоичную сериализацию объекта Lazy<T>
, я получаю System.Runtime.Serialization.SerializationException
.
Есть ли способ сделать это?
этот пример кода работает в. net framework и выдает исключение в. net core:
class Program
{
static void Main(string[] args)
{
var lazyS = new Lazy<LazyObject>(() => { return new LazyObject(); });
UtilityLibrary.TestSerializable(lazyS);
Console.ReadLine();
}
}
public static class UtilityLibrary
{
public static void TestSerializable(object obj)
{
if (obj == null)
return;
Type t = obj.GetType();
Console.WriteLine($"isSerializable - {t.IsSerializable}");
var formatter = new BinaryFormatter();
using (var stream = new FileStream("data.bin", FileMode.Create,
FileAccess.Write, FileShare.None))
{
formatter.Serialize(stream, obj);
}
// Deserialize the value tuple.
using (var readStream = new FileStream("data.bin", FileMode.Open))
{
object restoredValue = formatter.Deserialize(readStream);
Console.WriteLine($"{restoredValue.GetType().Name}: {restoredValue}");
}
}
}