c# - Lazy 的二进制序列化.net 核心中的对象
问题描述
我将我的项目转换为 .net core 3.1 (c#),现在当我尝试二进制序列化一个Lazy<T>
对象时,我得到一个System.Runtime.Serialization.SerializationException
.
有没有办法做到这一点?
此示例代码适用于 .net 框架并在 .net 核心中引发异常:
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}");
}
}
}
解决方案
推荐阅读
- mysql - 我想从 SQL Query 的两个表中获取总和
- nestjs - Nebular 中的 NbAuthJWTToken 什么时候过期?
- c# - WPF-退出代码-1代表什么
- ios - SwiftUI - 在 iPadOS 和 Catalyst 上使用带有鼠标/触控板的 onTapGesture 出现意外行为
- python - 删除文件中所有包含`a'的行并将其写入另一个文件
- excel - 如何将“枚举”转换为数组
- javascript - 如何在 PHP 中处理 axios 请求
- rust - 如何在线程之间传递带有 Rc 字段的结构(没有同时访问)
- node.js - Web3 发送没有元掩码的合约方法
- javascript - 当我在 JavaScript 中将整数 (3) 乘以字符串 ("2") 时,控制台显示 6