parser | 回调函数,用于确定字符串是否可以转换为 "TFilterConstant"。接受一个字符串并返回一个 ParseResult 对象。这包含成功标志,以及如果成功则包含实际转换后的值。 |
IQueryEngineFilter 当前过滤器。
添加特定于过滤器的类型解析器。
添加特定于过滤器的类型解析器,该解析器解析字符串并返回自定义类型。由自定义运算符处理程序使用。此类型解析器仅由此过滤器使用,不会影响其他过滤器。
// Add a new type parser for Vector2 written as "[x, y]", but only for this filter. // This type parser will not affect other filters. queryEngine.TryGetFilter("p", out var filter); filter.AddTypeParser(s => { // If the format requirement is not met, return a failure. if (!s.StartsWith("[") || !s.EndsWith("]")) return ParseResult<Vector2>.none; var trimmed = s.Trim('[', ']'); var vectorTokens = trimmed.Split(','); var vectorValues = vectorTokens.Select(token => float.Parse(token, CultureInfo.InvariantCulture.NumberFormat)).ToList(); if (vectorValues.Count != 2) return ParseResult<Vector2>.none; var vector = new Vector2(vectorValues[0], vectorValues[1]); // When the conversion succeeds, return a success. return new ParseResult<Vector2>(true, vector); });
请参见 IQueryEngineFilter 以获取完整的示例。