使用 FLEE 和自定义表达式上下文进行表达式分析

本文关键字:表达式 上下文 自定义 使用 FLEE | 更新日期: 2023-09-27 18:36:47

我正在使用Flee来构建公式生成器。它工作得很好,但我面临的唯一问题是 Flee 不理解我猜的通用方法。

我在使用的表达式上下文中声明了一个名为 IIf 的函数。

Public Function IIf(Of T)(ByVal cond As Boolean, ByVal left As T, ByVal right As T) As T
    Return If(cond, left, right)
End Function

现在我说我正在评估

IIF(A==B,1,5)

当我尝试编译表达式时,Flee 抛出了一个表达式异常,指出 -

The function IIf(boolean, Int32, Int32) is not declared.

我该如何解决这个问题。我的意思是,从某种意义上说,不能编写所有.net基元类型的函数的所有可能的重载。我应该采取什么方法。

使用 FLEE 和自定义表达式上下文进行表达式分析

在关于 FLEE 的讨论中,一张海报设法让泛型工作。http://flee.codeplex.com/discussions/14611 退房。实际上,海报将包含类声明为泛型。

或者,根据以下讨论,可能没有一种方法取决于类的结构:http://flee.codeplex.com/discussions/355342 声明海报必须声明原始数据类型的公共重载。

您还可以使用对象声明泛型方法并关闭Option Strict以允许隐式强制转换,如下所示:

Public Function IIf(ByVal cond As Boolean, ByVal left As Object, ByVal right As Object) As Object
    Return If(cond, left, right)
End Function