1

我试图阻止 DTO 的某些属性在调用patch.ApplyTo(object, adapter). 我目前的计划是将自定义属性放在要忽略的属性上,并且使用该适配器,仅当该操作中使用的路径不包含应忽略的属性名称时才允许操作通过。例如。

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

也许这是一个愚蠢的问题,但我找不到有关如何进行实际添加部分的任何信息。事实上,我根本找不到任何关于这个(IObjectAdapter)应该如何与 JsonPatch 一起使用的参考资料,除了有一个重载来传递一个适配器。

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

4

1 回答 1

1

这就是我最终解决同样问题的方法......

[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。

于 2019-07-16T19:30:43.773 回答