Skip to content

Commit 817e490

Browse files
committed
Merge branch 'master' into develop
# Conflicts: # src/Simplify.Web.Json/Simplify.Web.Json.csproj
2 parents a365e84 + 35f4b23 commit 817e490

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

src/Simplify.Web.Json/Model/Binding/JsonModelBinder.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,17 @@ namespace Simplify.Web.Json.Model.Binding
1010
/// </summary>
1111
public class JsonModelBinder : IModelBinder
1212
{
13+
private readonly JsonSerializerSettings? _settings;
14+
15+
/// <summary>
16+
/// Initializes a new instance of the <see cref="JsonModelBinder"/> class.
17+
/// </summary>
18+
/// <param name="settings">The settings.</param>
19+
public JsonModelBinder(JsonSerializerSettings? settings = null)
20+
{
21+
_settings = settings;
22+
}
23+
1324
/// <summary>
1425
/// Binds the model asynchronously.
1526
/// </summary>
@@ -27,7 +38,7 @@ public async Task BindAsync<T>(ModelBinderEventArgs<T> args)
2738
if (string.IsNullOrEmpty(args.Context.RequestBody))
2839
throw new ModelValidationException("JSON request body is null or empty");
2940

30-
args.SetModel(JsonConvert.DeserializeObject<T>(args.Context.RequestBody));
41+
args.SetModel(JsonConvert.DeserializeObject<T>(args.Context.RequestBody, _settings));
3142
}
3243
}
3344
}

src/Simplify.Web.Json/Simplify.Web.Json.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
<RepositoryType>GIT</RepositoryType>
1515
<PackageTags>Simplify.Web JSON</PackageTags>
1616
<PackageReleaseNotes>
17-
Updates
18-
* Upgrade to Simplify.Web 4.1.1
17+
Updates
18+
* Upgrade to Simplify.Web 4.1.1
1919
</PackageReleaseNotes>
2020
<OutputPath>bin\Any CPU\$(Configuration)\</OutputPath>
2121
<DocumentationFile>bin\Any CPU\$(Configuration)\$(TargetFramework)\Simplify.Web.Json.xml</DocumentationFile>

src/Simplify.Web.Json/SimplifyDIRegistratorExtensions.cs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Simplify.DI;
1+
using Newtonsoft.Json;
2+
using Simplify.DI;
23
using Simplify.Web.Json.Model.Binding;
34

45
namespace Simplify.Web.Json
@@ -12,9 +13,23 @@ public static class SimplifyDIRegistratorExtensions
1213
/// Registers Simplify.Web.Json JsonModelBinder.
1314
/// </summary>
1415
/// <param name="registrator">The registrator.</param>
15-
public static IDIRegistrator RegisterJsonModelBinder(this IDIRegistrator registrator)
16+
/// <param name="settings">The settings.</param>
17+
/// <returns></returns>
18+
public static IDIRegistrator RegisterJsonModelBinder(this IDIRegistrator registrator, JsonSerializerSettings? settings = null)
1619
{
17-
registrator.Register<JsonModelBinder>(LifetimeType.Singleton);
20+
registrator.Register(r => new JsonModelBinder(settings), LifetimeType.Singleton);
21+
22+
return registrator;
23+
}
24+
25+
/// <summary>
26+
/// Registers Simplify.Web.Json JsonModelBinder which will search for `JsonSerializerSettings` registered in container (JsonSerializerSettings should be manually registered in container).
27+
/// </summary>
28+
/// <param name="registrator">The registrator.</param>
29+
/// <returns></returns>
30+
public static IDIRegistrator RegisterJsonModelBinderWithSettingsFromContainer(this IDIRegistrator registrator)
31+
{
32+
registrator.Register(r => new JsonModelBinder(r.Resolve<JsonSerializerSettings>()), LifetimeType.Singleton);
1833

1934
return registrator;
2035
}

0 commit comments

Comments
 (0)