IQueryEngineFilter.AddTypeParser
Declaration
public Search.IQueryEngineFilter AddTypeParser(Func<string,ParseResult<TFilterConstant>> 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.