使用FLEE和自定义表达式上下文解析表达式

时间:2012-06-12 06:48:38

标签: c# vb.net parsing generics .net-2.0

我正在使用Flee来构建公式构建器。它的效果很好,但我遇到的唯一问题是Flee不理解Generic Methods我猜。

我在我正在使用的表达式上下文中声明了一个名为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正在抛出一个表达式 -

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

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

1 个答案:

答案 0 :(得分:2)

在关于FLEE的讨论中,一张海报设法让Generics工作。查看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