| File: Expression\FunctionProvider.cs | Web Access |
| Project: src\src\Microsoft.ML.Transforms\Microsoft.ML.Transforms.csproj (Microsoft.ML.Transforms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Reflection; namespace Microsoft.ML.Transforms { public delegate void SignatureFunctionProvider(); /// <summary> /// This interface enables extending the ExprTransform language with additional functions. /// </summary> public interface IFunctionProvider { /// <summary> /// The namespace for this provider. This should be a legal identifier in the expression language. /// Multiple providers may contribute to the same namespace. /// </summary> string NameSpace { get; } /// <summary> /// Returns an array of overloads for the given function name. This may return null instead of an /// empty array. The returned MethodInfos should be public static methods that can be freely invoked /// by IL in a different assembly. They should also be "pure" functions - with the output only /// depending on the inputs and NOT on any global state. /// </summary> MethodInfo[] Lookup(string name); /// <summary> /// If the function's value can be determined by the given subset of its arguments, this should /// return the resulting value. Note that this should only be called if values is non-empty and /// contains at least one null. If all the arguments are non-null, then the MethodInfo will be /// invoked to produce the value. /// </summary> /// <param name="name">The name of the function.</param> /// <param name="meth">The MethodInfo provided by Lookup. When there are multiple overloads of /// a function with a given name, this can be used to determine which overload is being used.</param> /// <param name="values">The values of the input arguments, with null for the non-constant arguments. This should /// only be called if there is at least one null.</param> /// <returns>The constant value, when it can be determined; null otherwise.</returns> object ResolveToConstant(string name, MethodInfo meth, object[] values); } }