File: ProviderServices\Filter\QueryParameterExpression.cs
Project: ..\..\..\src\Libraries\Microsoft.Extensions.VectorData.Abstractions\Microsoft.Extensions.VectorData.Abstractions.csproj (Microsoft.Extensions.VectorData.Abstractions)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq.Expressions;
using Microsoft.Shared.DiagnosticIds;
 
namespace Microsoft.Extensions.VectorData.ProviderServices.Filter;
 
/// <summary>
/// An expression representation a query parameter (captured variable) in the filter expression.
/// </summary>
[Experimental(DiagnosticIds.Experiments.VectorDataProviderServices, UrlFormat = DiagnosticIds.UrlFormat)]
public class QueryParameterExpression(string name, object? value, Type type) : Expression
{
    /// <summary>
    /// Gets the name of the parameter.
    /// </summary>
    public string Name { get; } = name;
 
    /// <summary>
    /// Gets the value of the parameter.
    /// </summary>
    public object? Value { get; } = value;
 
    /// <inheritdoc />
    public override ExpressionType NodeType => ExpressionType.Extension;
 
    /// <inheritdoc />
    public override Type Type => type;
 
    /// <inheritdoc />
    protected override Expression VisitChildren(ExpressionVisitor visitor) => this;
}