一个高性能的.NET序列化库:ZeroFormatter

常见的序列化方式有有 XML JSON 以及二进制,XML 和 JSON 因为都是文本,在有些场景并不合适使用,自带的二进制序列化产生的干扰太多,于是上全球最大的同性交友网站上找了一个序列化库,这货很好用,并且还支持 .NET Core 和 Unity。

Github:https://github.com/neuecc/ZeroFormatter
Nuget:https://www.nuget.org/packages/ZeroFormatter

推荐用 PM 安装:

PM> Install-Package ZeroFormatter

将你的需要序列化的类标记为 ZeroFormattable ,不需要序列化的字段标记为 IgnoreFormat

[ZeroFormattable]
public class MyClass
{
    // Index is key of serialization
    [Index(0)]
    public virtual int Age { get; set; }

    [Index(1)]
    public virtual string FirstName { get; set; }

    [Index(2)]
    public virtual string LastName { get; set; }

    // When mark IgnoreFormatAttribute, out of the serialization target
    [IgnoreFormat]
    public string FullName { get { return FirstName + LastName; } }

    [Index(3)]
    public virtual IList List { get; set; }
}

使用方法:

class Program
{
    static void Main(string[] args)
    {
        var mc = new MyClass
        {
            Age = 99,
            FirstName = "hoge",
            LastName = "huga",
            List = new List { 1, 10, 100 }
        };

        var bytes = ZeroFormatterSerializer.Serialize(mc);
        var mc2 = ZeroFormatterSerializer.Deserialize(bytes);

        // ZeroFormatter.DynamicObjectSegments.MyClass
        Console.WriteLine(mc2.GetType().FullName);
    }
}

按照官方的例子序列化生成的 byte[] 长度只有 60 个字节!太简洁了有木有。

本文在依然在 天兵公园 公众号,博客, 同步发布,转载前务必联系

你可能感兴趣的:(一个高性能的.NET序列化库:ZeroFormatter)