使用 ApsNetCore.JsonPatch (2.1.1) 包时,有没有办法注册/使用“全局”ContractResolver?
我遇到了路径未解析的问题,因为我的模型中的属性在 PascalCase 中,但 JsonPatch 中的路径在 SnakeCase 中。
在这种情况下,我必须将 JsonPatchDocument 上的 ContractResolver 设置为 Startup.cs 文件中的默认/全局注册的 ContractResolver。
它有效,但我必须为我要实施的每个补丁路由都这样做。
启动配置:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
})
}
控制器:
[HttpPatch("{id}"]
[Consumes(MediaTypeNames.Application.Json)]
public async Task<IActionResult> Patch(string id,
[FromBody] JsonPatchDocument<Entity> patchEntity)
{
...
patchEntity.ContractResolver = new DefaultContractResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
};
patchEntity.ApplyTo(entity);
...