nanoFramework.Serialization.Helper 1.0.12
保留前缀
dotnet add package nanoFramework.Serialization.Helper --version 1.0.12
NuGet\Install-Package nanoFramework.Serialization.Helper -Version 1.0.12
<PackageReference Include="nanoFramework.Serialization.Helper" Version="1.0.12" />
paket add nanoFramework.Serialization.Helper --version 1.0.12
#r "nuget: nanoFramework.Serialization.Helper, 1.0.12"
// Install nanoFramework.Serialization.Helper as a Cake Addin #addin nuget:?package=nanoFramework.Serialization.Helper&version=1.0.12 // Install nanoFramework.Serialization.Helper as a Cake Tool #tool nuget:?package=nanoFramework.Serialization.Helper&version=1.0.12
欢迎使用 .NET nanoFramework System.Runtime.Serialization 仓库
构建状态
组件 | 构建状态 | NuGet 包 |
---|---|---|
nanoFramework.System.Runtime.Serialization |
用法
BinaryFormatter 类允许将数据序列化和反序列化为二进制格式。这允许紧凑的存储,并且由于它在本地代码中实现,因此序列化和反序列化操作更快。
唯一的要求是为类或其字段添加[Serializable]
属性。其他属性可用于向序列化引擎提供提示,以便尽可能地减少序列化数据。更多内容将在下一节中介绍。
警告 .NET nanoFramework中二进制序列化的实现与.NET Framework或.NET Core的对应实现不兼容,这意味着无法用于在两个框架之间交换数据。
序列化类
以下是一个将在以下示例中使用的Person
类。
[Serializable]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public DateTime Birthday { get; set; }
public int ID { get; set; }
public string[] ArrayProperty { get; set; }
public Person Friend { get; set; }
}
要序列化,只需调用Serialize()
方法,并传递类实例。例如
var nestedTestClass = new Person()
{
FirstName = "John",
LastName = "Doe",
Birthday = new DateTime(1988, 4, 23),
ID = 2700,
Address = null,
ArrayProperty = new string[] { "hello", "world" },
Friend = new Person()
{
FirstName = "Bob",
LastName = "Smith",
Birthday = new DateTime(1983, 7, 3),
ID = 2000,
Address = "123 Some St",
ArrayProperty = new string[] { "hi", "planet" },
}
};
byte[] serializedPerson = BinaryFormatter.Serialize(nestedTestClass);
serializedPerson
字节数组包含nestedTestClass
的二进制表示。
反序列化类
为了将类从其二进制表示反序列化为类的实例,请调用Deserialize()
方法,并传递二进制表示。
[Serializable]
Person anotherPerson = (Person)BinaryFormatter.Deserialize(serializedPerson);
序列化提示
有一些可选属性可用于向序列化引擎提供提示,以尽可能减少序列化数据。以下是以Person
类为例,可能实现的优化
[Serializable]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public DateTime Birthday { get; set; }
[SerializationHints(RangeBias = 2000)]
public int ID { get; set; }
[SerializationHints(ArraySize = 2)]
public string[] ArrayProperty { get; set; }
public Person Friend { get; set; }
}
SerializationHints
提供了几种选项来改进数据打包。观察上面的ID
属性,它是一个int
类型,没有优化的话占用32位。现在,这个值用于存储ID,假设为了示例目的,只存储大于2000的ID。使用RangeBias
的值为2000,这个值将从存储的值中减去。在上面的代码中,值为2700的ID将序列化为(2700 - 2700 = 700),这可以存储为一个16位值,而不是最初占用的32位。
另一个序列化提示是数组大小。对于ArrayProperty
,假设它总是包含2个元素。通过添加ArraySize
并指定数组大小,将把这个信息作为序列化数据的一部分存储,从而节省了否则会被浪费的空间。
反馈和文档
有关文档、提供反馈、提交问题和了解如何贡献,请参阅主仓库。
加入我们的Discord社区这里。
鸣谢
该项目贡献者名单可在CONTRIBUTORS中找到。
许可证
nanoFramework类库采用MIT许可证。
行为准则
本项目采用了贡献者公约中定义的行为准则,以明确社区中期望的行为。更多信息请参阅.NET Foundation行为准则。
.NET Foundation
本项目由.NET Foundation支持。
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET 框架 | net48 兼容。 net481 已计算。 |
-
.NET Framework 4.8
- 无依赖。
-
net6.0
- 无依赖。
NuGet 包
此包没有被任何 NuGet 包使用。
GitHub 仓库
此包没有被任何流行的 GitHub 仓库使用。
版本 | 下载 | 最后更新 |
---|---|---|
1.0.12 | 239 | 12/16/2022 |