基于解析属性的 HotChocolate 过滤器集合

时间:2021-02-23 16:00:30

标签: c# hotchocolate

public class Parent{
  public IEnumerable<Child> Children(Filters filter){
    return new List<Child>() { new Child()};
  }
}

public class Child{
  public string Value(ChildrenFilter filter){
    // Maybe return null, maybe return a string
  }
}

我想根据 Child.Value 是否不同于 null 来过滤 Parent.Children 集合。 例如:.Where(child => // child has Value);

但是对于上面的代码,我似乎无法使用中间件,因为它在调用 Child.Value 之前运行。

在 Child.Value 解析后,是否有一个钩子可以让我应用过滤逻辑?

1 个答案:

答案 0 :(得分:0)

对于我的场景,我设法插入了自定义序列化程序,因此我可以在序列化之前访问响应。

此时,响应对象采用不同的格式,但通过一些自定义逻辑,我能够过滤我需要的内容。

  internal class CustomHttpResultSerializer : DefaultHttpResultSerializer
    {
        public override ValueTask SerializeAsync(IExecutionResult result, Stream stream, CancellationToken cancellationToken)
        {
            var queryResult = result as QueryResult;

            // Remove any unwanted results

            return base.SerializeAsync(result, stream, cancellationToken);
        }
    }

然后在启动时:

 services.AddHttpResultSerializer<CustomHttpResultSerializer>();