# System.Text.Json.Serialization.Metadata

``` diff
 namespace System.Text.Json.Serialization.Metadata {
     public static class JsonMetadataServices {
-        public static JsonTypeInfo<T> CreateObjectInfo<T>(JsonSerializerOptions options, Func<T> createObjectFunc, Func<JsonSerializerContext, JsonPropertyInfo[]> propInitFunc, JsonNumberHandling numberHandling, Action<Utf8JsonWriter, T> serializeFunc);

+        public static JsonTypeInfo<T> CreateObjectInfo<T>(JsonSerializerOptions options, JsonObjectInfoValues<T> objectInfo);
     }
+    public sealed class JsonObjectInfoValues<T> {
+        public JsonObjectInfoValues();
+        public Func<JsonParameterInfoValues[]> ConstructorParameterMetadataInitializer { get; set; }
+        public JsonNumberHandling NumberHandling { get; set; }
+        public Func<T> ObjectCreator { get; set; }
+        public Func<object[], T> ObjectWithParameterizedConstructorCreator { get; set; }
+        public Func<JsonSerializerContext, JsonPropertyInfo[]> PropertyMetadataInitializer { get; set; }
+        public Action<Utf8JsonWriter, T> SerializeHandler { get; set; }
+    }
+    public sealed class JsonParameterInfoValues {
+        public JsonParameterInfoValues();
+        public object DefaultValue { get; set; }
+        public bool HasDefaultValue { get; set; }
+        public string Name { get; set; }
+        public Type ParameterType { get; set; }
+        public int Position { get; set; }
+    }
 }
```

