Nino
October 5, 2025 · View on GitHub
✨ 为什么选择 Nino?
🔧 无缝集成利用C# Source Generator技术实现编译时自动代码生成,零手动配置。 |
⚡ 极致性能专为高吞吐量、低延迟场景设计,拥有极低的GC压力和内存分配。 |
🎮 Unity兼容与Unity项目无缝协作,支持Vector3、Quaternion等Unity原生数据类型。 |
🛠️ 高级特性处理复杂场景:多态、版本控制、自定义构造函数和私有成员序列化。 |
🎯 核心功能
🚀 性能与可靠性
- 高速序列化:在C#二进制序列化库中始终名列前茅
- 低内存占用:极低的GC压力和内存分配
- 引用反序列化:直接反序列化到现有对象中,消除分配开销
- 线程安全操作:完全支持并发序列化/反序列化,无需外部锁定
- 数据完整性:内置类型检查确保数据一致性
🧩 全面的类型支持
- 基础类型:完全支持所有C#基础类型(
int、float、DateTime等) - 现代C#特性:
records、record structs、structs、classes和泛型 - 集合类型:任何
IEnumerable<T>,包括List<T>、Dictionary<TKey,TValue>、HashSet<T>、ConcurrentDictionary<TKey,TValue> - 高级泛型:复杂嵌套类型如
Dictionary<string, List<CustomType[]>> - 值类型:
ValueTuple、Tuple、KeyValuePair<TKey,TValue>、Nullable<T>
🎮 Unity与跨平台
- Unity原生类型:
Vector3、Quaternion、Matrix4x4和其他Unity特定数据类型 - 跨程序集支持:在不同.NET程序集和项目间序列化类型
- 平台无关:在不同.NET实现间无缝工作
⚙️ 高级控制
- 多态支持:接口和抽象类序列化,保留类型信息
- 自定义构造函数:
[NinoConstructor]用于不可变类型和工厂模式 - 版本控制与迁移:
[NinoMember]排序和[NinoFormerName]向后兼容 - 隐私控制:
[NinoType(true)]包含私有/受保护成员 - 选择性序列化:
[NinoIgnore]排除特定字段 - 字符串优化:
[NinoUtf8]高效UTF-8字符串处理
📖 快速开始
安装
标准.NET项目:
dotnet add package Nino
Unity项目(通过OpenUPM):
openupm add com.jasonxudeveloper.nino
基本用法
[NinoType]
public class GameData
{
public int Score;
public string PlayerName;
public DateTime LastPlayed;
}
// 序列化
var data = new GameData { Score = 1000, PlayerName = "Player1", LastPlayed = DateTime.Now };
byte[] bytes = NinoSerializer.Serialize(data);
// 反序列化
var restored = NinoDeserializer.Deserialize<GameData>(bytes);
📊 性能表现
Nino在各种场景下都能提供卓越的性能表现。查看详细的基准测试和与其他流行序列化库的对比。
🤝 社区与支持
Made with ❤️ by JasonXuDeveloper
基于 MIT 许可证