C# 基于解析属性的热巧克力过滤器集合 公共类父类{ 公共IEnumerable子项(筛选器){ 返回新列表(){new Child()}; } } 公营儿童{ 公共字符串值(ChildrenFilter筛选器){ //可能返回null,可能返回字符串 } }

C# 基于解析属性的热巧克力过滤器集合 公共类父类{ 公共IEnumerable子项(筛选器){ 返回新列表(){new Child()}; } } 公营儿童{ 公共字符串值(ChildrenFilter筛选器){ //可能返回null,可能返回字符串 } },c#,hotchocolate,C#,Hotchocolate,我想根据Child.Value是否不同于null筛选Parent.Children集合。 例如:。其中(child=>//child有值) 但是对于上面的代码,我似乎不能使用中间件,因为它在调用Child.Value之前运行 是否有一个钩子让我在解析完Child.Value之后应用过滤逻辑?对于我的场景,我设法插入了一个自定义序列化程序,这样我就可以在响应序列化之前访问它 此时,响应对象的格式不同,但有一点自定义逻辑,我能够过滤我需要的内容 public class Parent{ publ

我想根据Child.Value是否不同于null筛选Parent.Children集合。 例如:。其中(child=>//child有值)

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


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

对于我的场景,我设法插入了一个自定义序列化程序,这样我就可以在响应序列化之前访问它

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

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
  }
}
然后在启动时:

  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();

我不太明白。您将
Value
声明为一个方法,但将其用作属性。在热巧克力框架中,类似这样的方法是一个解析器,一旦父级解析,它就会解析。通过这种方式,我可以将过滤器传递给“属性”,它实际上是一个方法
 services.AddHttpResultSerializer<CustomHttpResultSerializer>();