4 ms·
C# (or more precisely .NET libraries) does it using reflection. Attributes let you adjust the behaviour.
by googledocsftw 2y ago
C# (or more precisely .NET libraries) does it using reflection. Attributes let you adjust the behaviour.
- neonsunset 2y agoOr with build-time source generation (because this specific pattern of reflection is AOT-unfriendly). It's not as convenient if you are using default serializer options, but if you don't - it ties together JsonTypeInfo<T> and JsonSerializerOptions, so it ends up being a slightly terser way to write it. I do prefer the Rust-style serde annotations however. record User(string Name, DateOnly DoB); [JsonSerializable(typeof(User))] partial class SerializerContext: JsonSerializerContext; ... var user = new User("John", new(1984, 1, 1)); var response = await http.PostAsJsonAsync( url, user, SerializerContext.Default.User);