✨ Why Choose Nino?
🎯 Core Features
🚀 Performance & Reliability
- High-Speed Serialization: Consistently ranks among the fastest C# binary serializers
- Low Memory Footprint: Minimal GC pressure and memory allocation
- By-Reference Deserialization: Deserialize directly into existing objects to eliminate allocation overhead
- Thread-Safe Operations: Fully concurrent serialization/deserialization without external locking
- Data Integrity: Built-in type checking ensures data consistency
🧩 Comprehensive Type Support
- Primitives & Built-ins: Full support for all C# primitive types (
int,float,DateTime, etc.) - Modern C# Features:
records,record structs,structs,classes, and generics - Collections: Any
IEnumerable<T>includingList<T>,Dictionary<TKey,TValue>,HashSet<T>,ConcurrentDictionary<TKey,TValue> - Advanced Generics: Complex nested types like
Dictionary<string, List<CustomType[]>> - Value Types:
ValueTuple,Tuple,KeyValuePair<TKey,TValue>,Nullable<T>
🎮 Unity & Cross-Platform
- Unity Native Types:
Vector3,Quaternion,Matrix4x4, and other Unity-specific data types - Cross-Assembly Support: Serialize types across different .NET assemblies and projects
- Platform Agnostic: Works seamlessly across different .NET implementations
⚙️ Advanced Control
- Polymorphism: Interface and abstract class serialization with type preservation
- Custom Constructors:
[NinoConstructor]for immutable types and factory patterns - Versioning & Migration:
[NinoMember]ordering and[NinoFormerName]for backward compatibility - Privacy Control:
[NinoType(true)]to include private/protected members - Selective Serialization:
[NinoIgnore]to exclude specific fields - String Optimization:
[NinoUtf8]for efficient UTF-8 string handling
📖 Quick Start
Installation
Standard .NET Projects:
Unity Projects (via OpenUPM):
openupm add com.jasonxudeveloper.nino
Basic Usage
[NinoType] public class GameData { public int Score; public string PlayerName; public DateTime LastPlayed; } // Serialize var data = new GameData { Score = 1000, PlayerName = "Player1", LastPlayed = DateTime.Now }; byte[] bytes = NinoSerializer.Serialize(data); // Deserialize var restored = NinoDeserializer.Deserialize<GameData>(bytes);
📊 Performance
Nino consistently delivers exceptional performance across various scenarios. See detailed benchmarks and comparisons with other popular serialization libraries.