如何将IObjectAdapter与JsonPatch结合使用?

时间:2019-07-05 22:16:12

标签: c# .net json-patch

我正在尝试防止在调用patch.ApplyTo(object, adapter)时修补DTO的某些属性。我当前的计划是将自定义属性放在要忽略的属性上,并且使用该适配器,仅允许在该操作中使用的路径不包含应忽略的属性名称的情况下进行操作。例如

class CustomAdapter : IObjectAdapter
{
    public void Add(Operation operation, object objectToApplyTo)
    {
        if (pathIsValid(operation.path)) {
            // Actually do the adding somehow
        }
    }
}

也许这是一个愚蠢的问题,但是我找不到有关如何进行实际添加的任何信息。实际上,除了要传递适配器的重载之外,我根本找不到关于应该如何将此(IObjectAdapter)与JsonPatch一起使用的引用。

是否可以通过某种方式调用任何给定操作的默认实现? operation.Apply()存在,但是它需要一个适配器作为第二个参数-JsonPatch的“默认适配器”是什么?还是有一个更好的/内置的方式可以完全解决这个问题?

1 个答案:

答案 0 :(得分:0)

这就是我最终解决这个问题的方式...

[HttpPatch("profile")]
public async Task<IActionResult> Update([FromBody]JsonPatchDocument<User> userPatch)
{
    string[] validFields = new[] { "/name" };
    if (userPatch.Operations.Where(o => !validFields.Contains(o.path)).Count() > 0)
    {
        // invalid field
    }

所以我根本不使用IObjectAdapter。