Двоичная сериализация объекта Lazy <T>в ядре net - PullRequest
0 голосов
/ 14 июля 2020

Я преобразовал свой проект в. 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}");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...