-1
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.Value 之前运行。

解决 Child.Value 后,我是否可以应用过滤逻辑?

4

1 回答 1

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>();
于 2021-02-24T11:26:19.150 回答