diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/MrwSerializationTypeProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/MrwSerializationTypeProvider.cs
index 3ae92acd1c..dd00ad2ff3 100644
--- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/MrwSerializationTypeProvider.cs
+++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/MrwSerializationTypeProvider.cs
@@ -30,6 +30,7 @@ internal sealed class MrwSerializationTypeProvider : TypeProvider
private const string PrivateAdditionalPropertiesPropertyName = "_serializedAdditionalRawData";
private const string JsonModelWriteCoreMethodName = "JsonModelWriteCore";
private const string PersistableModelWriteCoreMethodName = "PersistableModelWriteCore";
+ private const string PersistableModelCreateCoreMethodName = "PersistableModelCreateCore";
private const string WriteAction = "writing";
private const string ReadAction = "reading";
private const string AdditionalRawDataVarName = "serializedAdditionalRawData";
@@ -38,6 +39,7 @@ internal sealed class MrwSerializationTypeProvider : TypeProvider
new("options", $"The client options for reading and writing models.", typeof(ModelReaderWriterOptions));
private readonly ParameterProvider _jsonElementDeserializationParam =
new("element", $"The JSON element to deserialize", typeof(JsonElement));
+ private readonly ParameterProvider _dataParameter = new("data", $"The data to parse.", typeof(BinaryData));
private readonly Utf8JsonWriterSnippet _utf8JsonWriterSnippet;
private readonly ModelReaderWriterOptionsSnippet _mrwOptionsParameterSnippet;
private readonly JsonElementSnippet _jsonElementParameterSnippet;
@@ -171,6 +173,7 @@ protected override MethodProvider[] BuildMethods()
BuildPersistableModelWriteMethod(),
BuildPersistableModelWriteCoreMethod(),
BuildPersistableModelCreateMethod(),
+ BuildPersistableModelCreateCoreMethod(),
BuildPersistableModelGetFormatFromOptionsMethod(),
//cast operators
BuildImplicitToBinaryContent(),
@@ -182,6 +185,7 @@ protected override MethodProvider[] BuildMethods()
methods.Add(BuildJsonModelWriteMethodObjectDeclaration());
methods.Add(BuildPersistableModelWriteMethodObjectDeclaration());
methods.Add(BuildPersistableModelGetFormatFromOptionsObjectDeclaration());
+ methods.Add(BuildPersistableModelCreateMethodObjectDeclaration());
}
return [.. methods];
@@ -270,6 +274,22 @@ internal MethodProvider BuildPersistableModelWriteMethodObjectDeclaration()
);
}
+ ///
+ /// Builds the create method for the model object.
+ ///
+ internal MethodProvider BuildPersistableModelCreateMethodObjectDeclaration()
+ {
+ // object IPersistableModel