使用 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 的讨论中,一张海报设法让泛型工作。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